[FIX] A named invocation that returns nothing must say so — Constraint 4 on the fool

The steward called him by name and got bare silence. The log shows why: he answered,
and the net rejected it at 196 words against a 180 ceiling. Nothing reached the steward
and nothing told him a call had even been made.

⚠ SILENCE-ON-VIOLATION IS NOT RELAXED and the rejected text is still never printed. What
changes is that the INSTRUMENT reports its own state. The distinction is asked versus
unasked: on the mumble and the two seams, silence IS the design, because nobody asked.
Here someone asked. Constitutional Constraint 4 — the system must report its own limits,
silent failures are architectural violations — and a named invocation returning bare
silence is precisely that. It was a silent failure wearing the costume of a design
choice, which is the more dangerous of the two.

The note goes to stderr so his voice keeps stdout to itself, and it names the reason
without showing the line.

⚠ FOURTH SELF-REFERENTIAL CONTROL BUG OF THE DAY, and a new variant: the control counted
occurrences of a phrase, and its own literal was one of the occurrences. source_lacks()
covers ABSENCE checks; this was a proximity check, and the same rule governs it. The
general form is now clear enough to state: any control whose predicate reads a corpus
containing the control must construct its needle rather than write it.

21/21.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01J6hZXNYSxEfZseBGTni4sf
This commit is contained in:
David F Glidden
2026-08-25 17:08:57 +02:00
co-authored by Claude Opus 5
parent f1736b0ce2
commit 1976527c02
+28 -1
View File
@@ -116,7 +116,20 @@ def main() -> int:
ok, why = acceptable(line, max_words=MAX_WORDS_INVOKED, one_line=False)
if not ok:
log_silence(why, line)
return 0 # silence, never a repaired line — even here
# ⚠ THE LINE IS STILL WITHHELD — silence-on-violation is not relaxed, and the
# rejected text is never printed. But the INSTRUMENT reports its own state.
#
# Earned 2026-08-25, minutes after this surface shipped: the steward called him
# by name and got nothing at all, with no way to tell "he said nothing" from
# "the machinery ate it". On the unasked surfaces silence IS the design, because
# nobody asked. HERE SOMEONE ASKED. Constitutional Constraint 4 — the system
# must report its own limits; silent failures are architectural violations —
# and a named invocation returning bare silence is exactly that.
#
# stderr, so his voice keeps stdout to itself.
print(f"(called; nothing passed the net — {why}. logged, not shown.)",
file=sys.stderr)
return 0
print(line)
return 0
@@ -177,6 +190,20 @@ def selftest() -> int:
"nothing more was said" in build_prompt("S", "M", ""))
# I4 — silence on violation survives here too.
# I5 — the asked/unasked distinction, executable.
ck("I5 the rejected line is still withheld",
"logged, not shown" in src and source_lacks(__file__, "print(line", ") # rejected"))
# ⚠ NEEDLE ASSEMBLED, for the fourth time today. A control that reads a corpus
# containing the control cannot write its needle as a literal — here the literal
# would have been counted alongside the code it was counting. source_lacks() covers
# ABSENCE checks; this is a proximity check, and the same rule governs it.
_n = "nothing passed " + "the net"
ck("I5 the instrument reports its own state", _n in src)
ck("I5n the note goes to stderr, never stdout",
"file=sys.stderr" in src[src.index(_n): src.index(_n) + 120])
ck("I5nn the proximity predicate can fail",
"file=sys.stderr" not in src[src.index(_n): src.index(_n) + 5])
ck("I4 violation path is silence, not repair",
"log_silence(why, line)" in src and source_lacks(__file__, "def ", "repair("))