Commit Graph
2 Commits
Author SHA1 Message Date
David F GliddenandClaude Opus 5 33754673b8 [FIX] §9's last two clauses: mute/off, and a shorter way to call him by name
! tarbuckle              ! tarbuckle mute      ! tarbuckle status
    ! tarbuckle what now     ! tarbuckle off/on

§9 said mute and off were "available at all times" and there was no way to do either;
the spec listed it as owed twice before it was built. Now one switch, read by every
surface.

⚠ mute and off are NOT the same and the difference is presence versus speech. `mute`
silences the utterance and LEAVES THE BODY — he is still in the room, which is §8a's
entire argument for the status line: visible silence at near-zero cost. `off` removes
him. Collapsing the two would have deleted the distinction the body exists to make.

The mute switch is the one piece of state the fool is permitted to be steered by,
because §9 says muting is never a fault and a mute he could ignore is not a mute. It
conserves no draw and remembers nothing: a switch, not a memory.

The wrapper is on PATH so the steward runs it directly rather than through the executor.
That is the point of the surface, and the wrapper says so in its own header: a fool
relayed by the executor is the executor's paraphrase of a fool.

Body 32/32, mumble 26/26, seam 15/15, invoke 17/17, wrap 21/21.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01J6hZXNYSxEfZseBGTni4sf
2026-08-25 17:04:05 +02:00
David F GliddenandClaude Opus 5 7a9dbf2853 [FIX] Tarbuckle tier 3: the wake seam speaks; the wrap seam has no surface and is not faked
The steward's four rulings are what this is built to, and they are load-bearing:
the net carries over UNCHANGED and is imported rather than reimplemented (a second
copy of acceptable() is a second, quietly divergent standard); silence-on-violation is
never relaxed; the rejection log is the diagnostic; and a guaranteed occasion is not a
guaranteed utterance — which is what makes a bounded generation legitimate rather than
a corner cut. Exceeding the bound is silence, never a hurried line.

⚠ THE WRAP SEAM IS NOT BUILT, and the reason is substrate, not effort. SessionEnd's
handler writes to stderr only when a hook FAILS; a successful hook's stdout goes
nowhere. §9 requires output to reach the steward, so wiring the wrap seam there would
be a mechanism that fires into nothing and reports success. Filed as owed.

⚠ THE COMMENSURABILITY CHECK THE STEWARD MANDATED FOUND A REAL COLLISION, and not the
one it was looking for. A seam is aperiodic, so it adds no period. But last-tick
persists ACROSS sessions, so any gap longer than the interval left the tick already due
at the moment of waking — the fool speaking twice into the same seam. The seam now
resets the clock. Invisible until the check was run; the second such find this pass.

⚠ THE SELF-REFERENTIAL CONTROL BUG RECURRED, minutes after being fixed, by the party
that fixed it, in a control written while watching for it. A literal needle plants
itself in the file it searches. Fixed as a MECHANISM this time — source_lacks() takes
the needle in parts, so the shape cannot be written again by accident. Correcting it a
second time by hand would have been the same one-off.

⚠ AND USING THE INSTRUMENT ONCE EXPOSED A DEFECT IN IT. The first seam rejection — a
10-word line against a 9-word cap — logged the verdict and DISCARDED the line, because
log_silence() wrote "line": "" unconditionally. The steward had just named this log as
what decides whether register and net are mismatched; a log holding only reasons cannot
answer that. Now records the evidence. Found by reading the log after one use.

The 9-word cap is LEFT AS FILED on one near-miss. The steward licensed widening the
seam net explicitly if seams warrant more words — but widening on n=1 is tuning to
taste, which is the door that ruling closed. The two-week log decides.

63/63 controls across three suites.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01J6hZXNYSxEfZseBGTni4sf
2026-08-25 16:43:53 +02:00