[FIX] The rate the steward asked for was uncomputable: only failures were recorded
"Two weeks of true-versus-drawn rate" needs a denominator, and there was none. Rejections were logged; draws were not, successes were not. The 73% that comes up silent — the whole denominator — left no trace at all. The instrument named as the diagnostic could report only its own failures, which is the shape of a log that always looks alarming and can never be checked. ⚠ §8 AND §9 LOOK LIKE THEY COLLIDE HERE AND DO NOT, on the reading taken: §9's "filed nowhere — no PENDING entry, no log, no item" governs the fool's OUTPUT entering the record; §8 orders "report the observed mumble rate after two weeks". So this records THAT something happened and never WHAT was said. log_event() takes a surface and an outcome and structurally cannot be handed a line — asserted on co_varnames, because a comment promising it would be a comment promising behaviour. ⚠ THE REJECTIONS LOG IS A DIFFERENT CASE AND IS NOT SETTLED. It holds up to 200 characters of his words, added at the steward's instruction so the log could answer whether register and net are mismatched. That is nearer to filing than counting, and §9 says no log. Flagged in the code and put to the steward rather than resolved by the party that wrote it. Nothing reads any of it back. Measurement, not memory. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01J6hZXNYSxEfZseBGTni4sf
This commit is contained in:
co-authored by
Claude Opus 5
parent
1976527c02
commit
9f06efcc9a
@@ -48,6 +48,31 @@ BANNED = (
|
||||
|
||||
|
||||
MUTE = os.path.expanduser("~/.claude/state/tarbuckle-mute")
|
||||
DRAWS = os.path.expanduser("~/.claude/state/tarbuckle-draws.jsonl")
|
||||
|
||||
|
||||
def log_event(surface: str, outcome: str) -> None:
|
||||
"""Count occurrences. NEVER content. §8 obliges a rate; §9 forbids a log.
|
||||
|
||||
⚠ The two clauses look like they collide and do not, on this reading: §9's "filed
|
||||
nowhere — no PENDING entry, no log, no item" is about the fool's OUTPUT entering the
|
||||
record, and §8 explicitly orders "report the observed mumble rate after two weeks."
|
||||
A rate needs a denominator. So this records THAT something happened and never WHAT
|
||||
was said — occurrence, not utterance.
|
||||
|
||||
⚠ The rejections log is a different case and is NOT settled: it holds up to 200
|
||||
characters of his words, at the steward's instruction, and that is nearer to filing.
|
||||
Flagged rather than resolved; see the note put to the steward 2026-08-25.
|
||||
|
||||
Nothing reads this back. It is measurement, not memory.
|
||||
"""
|
||||
try:
|
||||
os.makedirs(os.path.dirname(DRAWS), exist_ok=True)
|
||||
with open(DRAWS, "a") as fh:
|
||||
fh.write(json.dumps({"t": time.strftime("%Y-%m-%dT%H:%M:%S%z"),
|
||||
"surface": surface, "outcome": outcome}) + "\n")
|
||||
except Exception:
|
||||
pass
|
||||
|
||||
|
||||
def muted() -> str:
|
||||
@@ -199,6 +224,7 @@ def main() -> int:
|
||||
"kind": kind, "why": why, "line": line[:200]}) + "\n")
|
||||
except Exception:
|
||||
pass
|
||||
log_event(kind, "rejected")
|
||||
return 1 # silence. The draw was already consumed.
|
||||
try:
|
||||
os.makedirs(os.path.dirname(SLOT), exist_ok=True)
|
||||
@@ -206,6 +232,7 @@ def main() -> int:
|
||||
json.dump({"utterance": line, "kind": kind, "written": int(time.time())}, fh)
|
||||
except Exception:
|
||||
return 1
|
||||
log_event(kind, "spoke")
|
||||
return 0
|
||||
|
||||
|
||||
@@ -278,6 +305,12 @@ def selftest() -> int:
|
||||
ck("A5n a junk value is not a mute", muted() == "")
|
||||
finally:
|
||||
MUTE = _m
|
||||
# A6 — the occurrence log is content-free, and that is the whole point.
|
||||
ck("A6 log_event takes no content",
|
||||
log_event.__code__.co_argcount == 2
|
||||
and set(log_event.__code__.co_varnames[:2]) == {"surface", "outcome"})
|
||||
ck("A6n it cannot be handed a line",
|
||||
"line" not in log_event.__code__.co_varnames)
|
||||
ck("A4n the predicate can fail",
|
||||
any(("PENDING" in q) for q in paths + ("/x/PENDING.md",)))
|
||||
|
||||
|
||||
Reference in New Issue
Block a user