From 593c983999aed26c212b8dbda7bfbf313a7cc01d Mon Sep 17 00:00:00 2001 From: David F Glidden Date: Tue, 25 Aug 2026 17:14:01 +0200 Subject: [PATCH] =?UTF-8?q?[FIX]=20He=20was=20reciting=20his=20own=20examp?= =?UTF-8?q?les,=20not=20watching=20the=20session=20=E2=80=94=20steward=20c?= =?UTF-8?q?aught=20it?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Measured before agreeing: three of five recent outputs were near-verbatim lifts from the seven sample lines the soul carries. "Somebody's going to inherit that and think it was easy" and "It'll outlast you, not by much" are not observations; they are the prompt being handed back. ⚠ THIS REINTRODUCED PRECISELY WHAT AMENDMENT 6 RULED OUT. Type-only canned strings were rejected there because they "make a mood ring — atmosphere within a fortnight", and the material was settled as the live session for that reason. The implementation then let canned strings back in through the one door nobody was watching: the illustrative examples inside the register itself. The doctrine was right and the wiring undid it. Two fixes, because a prompt instruction alone is a promise. The prompts now mark the samples as illustrations of REGISTER, NOT VOCABULARY, and add the operative test — if the line would suit any other session equally well, it is wrong. And a mechanical net: echoes_soul() rejects a 4-word run shared with any sample line, or a 6-word run shared with the soul's prose. Checked against samples rather than the whole soul at n=4 because the soul's prose shares ordinary 4-grams with ordinary English, and a net firing on those would silence him for speaking normally. Fixtures are the REAL measured lifts, not invented ones, with two of his own lines as negative controls. ⚠ This TIGHTENS the net; silence-on-violation is untouched and still absolute. Verified after: he now speaks about this session, including about this very defect. body 32 · mumble 32 · seam 15 · invoke 21 · wrap 21. Co-Authored-By: Claude Opus 5 Claude-Session: https://claude.ai/code/session_01J6hZXNYSxEfZseBGTni4sf --- scripts/tarbuckle-invoke.py | 10 ++++++- scripts/tarbuckle-mumble.py | 52 +++++++++++++++++++++++++++++++++++++ scripts/tarbuckle-seam.py | 8 +++++- scripts/tarbuckle-wrap.py | 8 +++++- 4 files changed, 75 insertions(+), 3 deletions(-) diff --git a/scripts/tarbuckle-invoke.py b/scripts/tarbuckle-invoke.py index 012a29d..eb0a06d 100755 --- a/scripts/tarbuckle-invoke.py +++ b/scripts/tarbuckle-invoke.py @@ -29,7 +29,8 @@ import time sys.path.insert(0, os.path.dirname(os.path.abspath(__file__))) from tarbuckle_mumble_shim import (acceptable, soul_register, session_material, # noqa: E402 - source_lacks, muted, log_event, REJECTS) + source_lacks, muted, log_event, # noqa: E402 + echoes_soul, REJECTS) MAX_WORDS_INVOKED = 180 # §9's "at length", made a number TIMEOUT_S = 90 # the steward is deliberately waiting; he may take longer @@ -64,6 +65,11 @@ The work you are in the room for: {material} {asked} +⚠ THE SAMPLE LINES ABOVE ARE ILLUSTRATIONS OF REGISTER, NOT VOCABULARY. Do not reuse +them, any phrase from them, or their subject matter — no thumbs, no handles, no blades +unless the session is about them. Everything you say must come from the session above. +If it would suit any other session equally well, it is wrong. + You have been given the floor. Answer at length — this is the exception to your one line, and the only one. Speak as yourself, not about yourself. @@ -115,6 +121,8 @@ def main() -> int: return 1 line = (r.stdout or "").strip() ok, why = acceptable(line, max_words=MAX_WORDS_INVOKED, one_line=False) + if ok and echoes_soul(line, register): + ok, why = False, f"recited the soul: {echoes_soul(line, register)!r}" if not ok: log_silence(why, line) log_event("invoke", "silent") diff --git a/scripts/tarbuckle-mumble.py b/scripts/tarbuckle-mumble.py index a36d08f..7a7bebc 100755 --- a/scripts/tarbuckle-mumble.py +++ b/scripts/tarbuckle-mumble.py @@ -90,6 +90,40 @@ def muted() -> str: return "" +def _grams(text: str, n: int) -> set: + w = re.findall(r"[a-z']+", text.lower()) + return {" ".join(w[i:i + n]) for i in range(len(w) - n + 1)} + + +def echoes_soul(line: str, soul: str) -> str: + """'' if the line is his own; otherwise the phrase he recycled. + + ⚠ EARNED 2026-08-25, BY THE STEWARD NOTICING. The soul carries seven illustrative + sample lines, the prompt embeds the soul verbatim, and the model handed them back: + three of five measured outputs were near-verbatim lifts. A fool reciting his own + examples is not watching the session at all — and AMENDMENT 6 already ruled that + canned strings keyed to nothing "make a mood ring, atmosphere within a fortnight". + The implementation reintroduced exactly what the doctrine rejected, through the one + door nobody was watching: the examples. + + Two thresholds, because the failure has two shapes. A 4-word run against the SAMPLE + LINES catches direct recital; a 6-word run against the whole soul catches longer + lifts out of the prose. Checked against the samples rather than the whole soul at + n=4 because the soul's prose shares ordinary 4-grams with ordinary English, and a + net that fires on those would silence him for speaking normally. + + ⚠ This TIGHTENS the net. Silence-on-violation is unchanged and still absolute. + """ + samples = re.findall(r"^- '(.+?)'$", soul, re.M) + lg4 = _grams(line, 4) + for sm in samples: + hit = lg4 & _grams(sm, 4) + if hit: + return sorted(hit)[0] + hit6 = _grams(line, 6) & _grams(soul, 6) + return sorted(hit6)[0] if hit6 else "" + + def source_lacks(path: str, *parts: str) -> bool: """True if the joined needle does NOT appear in `path`. @@ -164,6 +198,10 @@ Here is the tail of the session he is in the room for: {weight} Write ONE line in his voice. Absolute constraints: +- ⚠ THE SAMPLE LINES ABOVE ARE ILLUSTRATIONS OF HIS REGISTER, NOT HIS VOCABULARY. Do + not reuse them, or any phrase from them, or their subject matter. They show how he + sounds. What he says must come from the session above and nowhere else. If your line + would work equally well pasted into any other session, it is wrong. - Between {MIN_WORDS} and {MAX_WORDS} words. One clause. Present tense. Flat, no lift. - IT MUST HAVE NO TRUTH VALUE. Nobody must be able to open a file and check it, agree with it, or refute it. Put two things next to each other so a shape shows. Do not @@ -217,6 +255,10 @@ def main() -> int: return 1 line = (r.stdout or "").strip().strip('"').strip() ok, why = acceptable(line) + if ok: + echo = echoes_soul(line, register) + if echo: + ok, why = False, f"recited the soul: {echo!r}" if not ok: try: with open(REJECTS, "a") as fh: @@ -309,6 +351,16 @@ def selftest() -> int: ck("A6 log_event takes no content", log_event.__code__.co_argcount == 2 and set(log_event.__code__.co_varnames[:2]) == {"surface", "outcome"}) + # A7 — the recital net, with the real measured lifts as fixtures. + _soul = soul_register() or "" + ck("A7 catches a verbatim sample", + bool(echoes_soul("Somebody's going to inherit this and think it was easy.", _soul))) + ck("A7 catches a second measured lift", + bool(echoes_soul("You've been holding it that way since you were nineteen.", _soul))) + ck("A7n passes a line that is his own", + not echoes_soul("Second surface you've found for the same voice.", _soul)) + ck("A7n passes an ordinary short observation", + not echoes_soul("Third one that's held together with a name.", _soul)) ck("A6n it cannot be handed a line", "line" not in log_event.__code__.co_varnames) ck("A4n the predicate can fail", diff --git a/scripts/tarbuckle-seam.py b/scripts/tarbuckle-seam.py index 920bdcb..745cfca 100755 --- a/scripts/tarbuckle-seam.py +++ b/scripts/tarbuckle-seam.py @@ -41,7 +41,8 @@ sys.path.insert(0, os.path.dirname(os.path.abspath(__file__))) # reimplementing is the "one canonical source" rule applied to a constraint: a second # copy of `acceptable()` is a second, quietly divergent standard. from tarbuckle_mumble_shim import (acceptable, soul_register, session_material, # noqa: E402 - source_lacks, muted, log_event, REJECTS) + source_lacks, muted, log_event, # noqa: E402 + echoes_soul, REJECTS) LAST_TICK = os.path.expanduser("~/.claude/state/tarbuckle-last-tick") SEAM_TIMEOUT_S = 15 @@ -68,6 +69,9 @@ He has just walked in on this, already in progress: Write ONE line in his voice, on arriving. Absolute constraints: +- ⚠ THE SAMPLE LINES ABOVE ARE ILLUSTRATIONS OF REGISTER, NOT VOCABULARY. Do not reuse + them, any phrase from them, or their subject matter. What he says must come from the + session above. If the line would suit any other session equally, it is wrong. - Between 3 and 9 words. One clause. Present tense. Flat, no lift. - IT MUST HAVE NO TRUTH VALUE. Nobody must be able to open a file and check it, agree with it, or refute it. Put two things next to each other so a shape shows. @@ -129,6 +133,8 @@ def main() -> int: return 0 line = (r.stdout or "").strip().strip('"').strip() ok, why = acceptable(line) + if ok and echoes_soul(line, register): + ok, why = False, f"recited the soul: {echoes_soul(line, register)!r}" if not ok: log_silence(why, line) log_event("seam", "silent") diff --git a/scripts/tarbuckle-wrap.py b/scripts/tarbuckle-wrap.py index bafdb56..be7f1f8 100755 --- a/scripts/tarbuckle-wrap.py +++ b/scripts/tarbuckle-wrap.py @@ -31,7 +31,8 @@ import time sys.path.insert(0, os.path.dirname(os.path.abspath(__file__))) from tarbuckle_mumble_shim import (acceptable, soul_register, session_material, # noqa: E402 - source_lacks, muted, log_event, REJECTS) + source_lacks, muted, log_event, # noqa: E402 + echoes_soul, REJECTS) FIRED = os.path.expanduser("~/.claude/state/tarbuckle-wrap-fired") TIMEOUT_S = 15 @@ -116,6 +117,9 @@ The work he has been in the room for is being put down for the day: Write ONE line in his voice, as it is being put down. Absolute constraints: +- ⚠ THE SAMPLE LINES ABOVE ARE ILLUSTRATIONS OF REGISTER, NOT VOCABULARY. Do not reuse + them, any phrase from them, or their subject matter. What he says must come from the + session above. If the line would suit any other session equally, it is wrong. - Between 3 and 9 words. One clause. Present tense. Flat, no lift. - IT MUST HAVE NO TRUTH VALUE. Nobody may open a file and check it, agree with it, or refute it. Put two things next to each other so a shape shows. @@ -169,6 +173,8 @@ def main() -> int: return 0 line = (r.stdout or "").strip().strip('"').strip() ok, why = acceptable(line) + if ok and echoes_soul(line, register): + ok, why = False, f"recited the soul: {echoes_soul(line, register)!r}" if not ok: log_silence(why, line) log_event("wrap", "silent")