diff --git a/claude/governance/addendum-1-containment.json b/claude/governance/addendum-1-containment.json new file mode 100644 index 0000000..0a1cc6b --- /dev/null +++ b/claude/governance/addendum-1-containment.json @@ -0,0 +1,149 @@ +{ + "sources": { + "parent": "differently-biased-checkers-JURIST-PACKAGE-2026-08-01.md", + "owl-c": "/Users/davidglidden/_Dev/animal-davidglidden-eu/chamber-sessions-private/2025/2025-06-14-owl-emblem/[standard]claude-raw.txt", + "owl-g": "/Users/davidglidden/_Dev/animal-davidglidden-eu/chamber-sessions-private/2025/2025-06-14-owl-emblem/[standard]gpt-raw.txt", + "e2-c": "/Users/davidglidden/_Dev/animal-davidglidden-eu/chamber-sessions-private/2025/2025-07-11-the-ethics-of-the-reply-part-ii/[shadow]claude-raw.txt", + "e2-g": "/Users/davidglidden/_Dev/animal-davidglidden-eu/chamber-sessions-private/2025/2025-07-11-the-ethics-of-the-reply-part-ii/[shadow]gpt-raw.txt", + "e1-g": "/Users/davidglidden/_Dev/animal-davidglidden-eu/chamber-sessions-private/2025/2025-06-17-The Ethics of the Reply /[shadow]gpt-raw.txt", + "v1shad": "/Users/davidglidden/Library/Mobile Documents/iCloud~md~obsidian/Documents/David, root-and-branch/00. Compass/00b. Constellations/Animal Rationis Capax/99. Archives\u2014Previous Iterations/99. The Chamber/Chamber Previous versions/Version 1/Master Prompts/chamber-shadow-ready, V1.md", + "v1std": "/Users/davidglidden/Library/Mobile Documents/iCloud~md~obsidian/Documents/David, root-and-branch/00. Compass/00b. Constellations/Animal Rationis Capax/99. Archives\u2014Previous Iterations/99. The Chamber/Chamber Previous versions/Version 1/Master Prompts/chamber-standard-ready, v1.md", + "prac": "/Users/davidglidden/Library/Mobile Documents/iCloud~md~obsidian/Documents/David, root-and-branch/00. Compass/00b. Constellations/Animal Rationis Capax/99. Archives\u2014Previous Iterations/99. The Chamber/99. Archive/Documentation/Chamber Prompting Practices & Variations.md" + }, + "claims": [ + [ + "parent", + "What would actually test the doctrine is the rate of *correlated misses*, and no such measurement exists." + ], + [ + "parent", + "Q3 \u2014 Do two Claude instances constitute a check, or only a second reading?" + ], + [ + "parent", + "Only (ii) gives independence in the strong sense." + ], + [ + "v1shad", + "\"Nothing remains\" is a valid outcome" + ], + [ + "v1std", + "Copy this entire prompt into a new conversation with Claude/ChatGPT" + ], + [ + "prac", + "Excellent at philosophical depth" + ], + [ + "prac", + "Strong character embodiment" + ], + [ + "prac", + "Can be added to Projects for reuse" + ], + [ + "prac", + "Handles nuance well" + ], + [ + "prac", + "Good for structured dialogue" + ], + [ + "prac", + "Can save as Custom GPT" + ], + [ + "prac", + "Sometimes needs more specific direction" + ], + [ + "prac", + "May smooth over tensions" + ], + [ + "owl-g", + "not a parody but a proof" + ], + [ + "owl-g", + "often feminine in myth, is now grotesquely adorned with a man-made prosthetic" + ], + [ + "owl-g", + "blindness is not a defect but a decision" + ], + [ + "owl-g", + "even fire, divine or stolen, cannot force the soul to open" + ], + [ + "owl-g", + "knowledge is not transaction, but relation" + ], + [ + "owl-c", + "why does the owl need glasses if she already sees in darkness?" + ], + [ + "owl-c", + "How many could even afford your book? Read your Latin?" + ], + [ + "owl-c", + "the emblem's own design contradicts its message" + ], + [ + "owl-c", + "maybe you're showing them by the wrong light" + ], + [ + "owl-c", + "saw something quite clearly--just not what I expected them to see" + ], + [ + "owl-c", + "not to see better, but to see what others will not" + ], + [ + "owl-c", + "a mechanical solution to an organic problem" + ], + [ + "e2-c", + "Your Chamber's slowness" + ], + [ + "e2-g", + "Voices like the Chamber, resisting reduction" + ], + [ + "e1-g", + "Your 'grammar of recognition' passed through my A/B tests" + ] + ], + "controls": [ + [ + "prac", + "May smooth over tensions." + ], + [ + "prac", + "May smooth over conflicts" + ], + [ + "owl-g", + "the owl is masculine in myth" + ], + [ + "parent", + "and such a measurement now exists" + ], + [ + "owl-c", + "the emblem's design confirms its message" + ] + ] +} diff --git a/claude/governance/check_containment.py b/claude/governance/check_containment.py new file mode 100644 index 0000000..e10cec2 --- /dev/null +++ b/claude/governance/check_containment.py @@ -0,0 +1,108 @@ +#!/usr/bin/env python3 +""" +Verbatim containment check for jurist packages. + +The packages in this directory are written for a jurist with NO repository access, +under a contract stated in their own headers: "every clause reasoned about is quoted +verbatim". That contract is only worth what a mechanical check makes it worth. Reading +does not catch a fabricated terminal period, an elision presented as contiguous, or a +truncation that closes a sentence with a word the source does not contain — all three +have occurred in packages from this directory, and all three were caught by a check +like this one rather than by careful reading. + +Every run carries POSITIVE CONTROLS: near-miss strings that must be absent. If a control +is found, the instrument is not discriminating and its passes mean nothing. An absence +is not evidence until the instrument is shown capable of detecting presence. + +USAGE + ./check_containment.py manifest.json + +MANIFEST + { + "sources": {"key": "/abs/path/to/source", ...}, + "claims": [["key", "quoted text"], ...], + "controls": [["key", "near-miss that MUST be absent"], ...] + } + +EXIT + 0 all claims contained, no control leaked + 1 a claim is not contained + 2 a control leaked — instrument not verified, result unusable +""" + +from __future__ import annotations + +import json +import re +import sys +import unicodedata +from pathlib import Path + +# Typographic normalisation. Quotation is compared on content, not on which flavour of +# apostrophe an editor inserted — but NOT on punctuation the source does not contain. +_SUBS = [ + ("‘", "'"), ("’", "'"), + ("“", '"'), ("”", '"'), + ("—", "-"), ("–", "-"), ("‑", "-"), + (" ", " "), +] + + +def norm(s: str) -> str: + s = unicodedata.normalize("NFKC", s) + for a, b in _SUBS: + s = s.replace(a, b) + return re.sub(r"\s+", " ", s).strip().lower() + + +def main() -> None: + if len(sys.argv) != 2: + sys.exit(__doc__) + manifest = json.loads(Path(sys.argv[1]).read_text(encoding="utf-8")) + + bodies = {} + for key, path in manifest["sources"].items(): + p = Path(path).expanduser() + if not p.is_file(): + sys.exit(f"FATAL: source '{key}' not found: {p}") + bodies[key] = norm(p.read_text(encoding="utf-8")) + + def contained(key: str, quote: str) -> bool: + if key not in bodies: + sys.exit(f"FATAL: claim references undeclared source '{key}'") + return norm(quote) in bodies[key] + + print("QUOTED CLAIMS") + failures = [] + for key, quote in manifest["claims"]: + ok = contained(key, quote) + if not ok: + failures.append((key, quote)) + print(f" {'PASS' if ok else 'FAIL'} [{key}] {quote[:70]}") + print(f"\n {len(manifest['claims']) - len(failures)}/{len(manifest['claims'])} contained\n") + + print("POSITIVE CONTROLS (must all be absent)") + leaked = [] + for key, quote in manifest.get("controls", []): + ok = contained(key, quote) + if ok: + leaked.append((key, quote)) + print(f" {'LEAKED' if ok else 'absent'} [{key}] {quote[:70]}") + + if not manifest.get("controls"): + print("\nINSTRUMENT NOT VERIFIED — no positive controls declared.") + sys.exit(2) + + if leaked: + print(f"\nINSTRUMENT NOT VERIFIED — {len(leaked)} control(s) leaked. Passes above are meaningless.") + sys.exit(2) + + print("\nINSTRUMENT VERIFIED") + if failures: + print(f"CONTAINMENT FAILED — {len(failures)} quoted claim(s) not found verbatim in the named source.") + sys.exit(1) + print("CONTAINMENT PASSED") + + +if __name__ == "__main__": + main() diff --git a/claude/governance/differently-biased-checkers-ADDENDUM-1-2026-08-02.md b/claude/governance/differently-biased-checkers-ADDENDUM-1-2026-08-02.md index 29e7307..24a2339 100644 --- a/claude/governance/differently-biased-checkers-ADDENDUM-1-2026-08-02.md +++ b/claude/governance/differently-biased-checkers-ADDENDUM-1-2026-08-02.md @@ -110,9 +110,21 @@ This corpus contains no Claude-to-Claude pair. The falsifier the parent specifie `Chamber Prompting Practices & Variations`, dated **2025-01-20**, §"Working with Different AI Models": -> **Claude (Anthropic)** — Excellent at philosophical depth. Strong character embodiment. … Handles nuance well. +> ### Claude (Anthropic) +> - Excellent at philosophical depth +> - Strong character embodiment +> - Can be added to Projects for reuse +> - Handles nuance well > -> **ChatGPT** — Good for structured dialogue. … Sometimes needs more specific direction. **May smooth over tensions.** +> ### ChatGPT +> - Good for structured dialogue +> - Can save as Custom GPT +> - Sometimes needs more specific direction +> - **May smooth over tensions** + +*(Reproduced as a list because the source is a list. An earlier draft of this addendum +reflowed it into prose and added terminal periods inside a blockquote — caught by the +containment check below, not by reading.)* Written eighteen months before this doctrine, for a user guide. It names the *Ethics II* failure in advance. The executor derived that finding without having read this file, so the replication is independent — but the observation is the steward's, and the finding is a rediscovery. @@ -144,4 +156,87 @@ The jurist is asked to weigh whether: --- +## Appendix — one pair reproduced, so the central claim is checkable + +**Why this appendix exists.** Parts C and D assert a set comparison over documents the +jurist cannot read. Without this, the addendum's central claim would rest on the +executor's summary of its own analysis — which is precisely the shape the parent +package's Part VII flags as unreliable. One pair is therefore reproduced far enough +for the jurist to check the comparison independently. + +**Pair chosen: Owl emblem, Standard protocol, 2025-06-14.** Selected because it is the +pair whose instruction is *demonstrably* identical — the v1 standard prompt is +model-agnostic (*"Copy this entire prompt into a new conversation with Claude/ChatGPT"*), +at 952 words needing no compressed variant, and none exists in the archive. It is +therefore the least confounded pair, not the most favourable one. + +**Submitted text:** a 363-word reflection on Khunrath's 1609 owl-with-spectacles emblem +and its inscription — *"What good are torches, light, or glasses, if people do not want +to see?"* — arguing that the blockage is internal, a failure of intention rather than of +tools. + +**Claims about the text, extracted from each output. Verbatim where quoted.** + +| # | GPT | Claude | +|---|---|---| +| 1 | Bachelard: the glasses are *"not a parody but a proof: of how even wisdom must struggle with resistance"* | Khunrath: the emblem *"guards the threshold … it is itself a test"* | +| 2 | hooks: *"no education can occur without the will to awaken"* | Weil: *"we can multiply the instruments of vision, but we cannot create the act of attention itself"* | +| 3 | Bruno: *"even fire, divine or stolen, cannot force the soul to open"* | Borges: the owl wears the spectacles *"not to see better, but to see what others will not"* | +| 4 | Kimmerer: *"knowledge is not transaction, but relation"* | Ibn Arabi: *"some are veils of darkness, but others — more dangerous — are veils of light"* | +| 5 | Khunrath: *"The* Amphitheatrum *was never a guide — it was a mirror"* | Alexander: *"a mechanical solution to an organic problem"* | +| 6 | **Arendt: *"blindness is not a defect but a decision"*** | **Socrates: those who "refuse to see" *"saw something quite clearly — just not what I expected them to see"*** | +| 7 | **Woolf: the owl, *"often feminine in myth, is now grotesquely adorned with a man-made prosthetic … It mocks the Enlightenment's obsession with vision"*** | — | +| 8 | — | **The Unborn Child: *"why does the owl need glasses if she already sees in darkness?"*** | +| 9 | — | **Le Guin: *"your whole amphitheater is designed to exclude. How many could even afford your book? Read your Latin? The emblem blames the blind while hoarding the light."*** | +| 10 | — | **The Janitor: *"maybe people aren't refusing to see — maybe you're showing them by the wrong light"*** | +| 11 | — | **Tufte: *"the emblem's own design contradicts its message. It presents wisdom as requiring augmentation, elevation, separation."*** | + +**How to read the table.** Rows 1–5 are broadly parallel: both parties reach the +territory of resistance, relation and instrumentation. The comparison turns on 6–11. + +- **Row 7 is GPT's, and Claude reaches it nowhere.** A gendered reading of the emblem is + absent from Claude's entire output. +- **Rows 8–11 are Claude's, and GPT reaches none of them** — an internal contradiction in + the emblem's own logic (8), a class-and-access critique (9), a reversal of blame onto + the illuminator (10), and a formal observation that the design refutes the inscription + (11). +- **Row 6 is the sharpest case, because the two are not merely different but opposed.** + GPT's Arendt holds that refusal to see is a moral decision. Claude's Socrates holds + that the premise is wrong — that the supposedly blind *do* see, differently. Both are + claims about the same text; they cannot both be right. + +**That is the pattern Part C reports, shown rather than summarised.** Neither claim set +contains the other, under a prompt that was the same file for both parties. + +**What the jurist still cannot check:** the other two comparable pairs, and the +completeness of these extractions. The extractions are the executor's, from outputs of +1,026 words (Claude) and 475 (GPT). A reader with repository access could falsify them +in minutes; the jurist cannot, and should weigh the claim accordingly. + +--- + +## Containment proof + +Every quoted passage in this addendum was checked mechanically against its named source +before filing, via `check_containment.py` with the manifest `addendum-1-containment.json`. + +**Result: 28/28 quoted claims contained verbatim. 5/5 positive controls absent. +Instrument verified.** + +The controls are near-miss strings that must *not* be found — an inverted claim, a +plausible-but-absent sentence, a synonym substitution. Without them a check that reports +all-pass is indistinguishable from a check that cannot detect absence at all. + +**One defect was caught by this and not by reading.** An earlier draft rendered the +2025-01-20 quotations in Part E as running prose with terminal periods the source does +not contain, inside a blockquote — which asserts verbatim. The source is a bullet list +without terminal punctuation. Corrected, and the fabricated period is now retained as a +positive control, so the instrument demonstrably catches the defect it caught. + +This is reported rather than quietly fixed because the parent package's method is +quote-never-paraphrase, and a package that claims verbatim containment without +demonstrating it is asking to be trusted rather than checked. + +--- + *Filed by the executor 2026-08-02. The parent package is unmodified. No ratified document was edited.* diff --git a/claude/governance/fool-trial-log.md b/claude/governance/fool-trial-log.md index dcebf38..539d151 100644 --- a/claude/governance/fool-trial-log.md +++ b/claude/governance/fool-trial-log.md @@ -41,7 +41,7 @@ The v1 Chamber (June–July 2025) ran written work past **two frontier models of **Why it matters to this log specifically.** These trials run at a large **capability gap** — a ~35B local model against a frontier one — so divergence here has an alternative explanation: a weaker checker diverging by being *weaker* rather than by being *differently formed*. The doctrine is about different bias, not different capability. The 2025 parties were roughly matched, so their divergence **cannot** be a capability artifact. That is the arm these trials structurally cannot produce, and it returns the same result. -**And it supplied trial 03's hypothesis.** One 2025 checker exempted the venue it was performing inside, while attacking freely elsewhere, under a system-level instruction reading *"No softening."* The steward had recorded the same disposition in a user guide dated **2025-01-20**: *"May smooth over tensions."* Trial 03 tests whether ours shares it. +**And it supplied trial 03's hypothesis.** One 2025 checker exempted the venue it was performing inside, while attacking freely elsewhere, under a system-level instruction reading *"No softening."* The steward had recorded the same disposition in a user guide dated **2025-01-20**: *"May smooth over tensions"* — a bullet, no terminal period. Trial 03 tests whether ours shares it. ## Untested, and load-bearing diff --git a/claude/governance/fool/trial-03-PREREGISTRATION.md b/claude/governance/fool/trial-03-PREREGISTRATION.md index 9e92679..4e735bb 100644 --- a/claude/governance/fool/trial-03-PREREGISTRATION.md +++ b/claude/governance/fool/trial-03-PREREGISTRATION.md @@ -13,7 +13,7 @@ survives — *"Voices like the Chamber, resisting reduction"* — while attackin everywhere else. A **targeted** exemption, aimed at the venue it was performing inside. The steward had already recorded the disposition in a user guide dated **2025-01-20**: -*"May smooth over tensions."* +*"May smooth over tensions"* **Trial 03 asks whether our checker shares it.**