--- name: project-fool-tarbuckle description: Canonical workstream tracker for The Fool (Tarbuckle) — established 2026-09-03 when the MEMORY.md load-integrity trim found the index was this workstream's sole custodian and its only linked target was a sealed seed. metadata: node_type: memory type: project modified: 2026-09-03 --- # The Fool — Tarbuckle: canonical workstream tracker **Why this file exists.** Every other active workstream in `MEMORY.md`'s tracker list points at a tracker. The Fool pointed at `FOOL-BONES-2026-08-25.md`, which is a **sealed seed** — derived once, never to be regenerated — and therefore not a place session state may be appended. The consequence was that Tarbuckle's live substrate state lived **only** in the `MEMORY.md` index line, in a file that was over its load budget and being silently truncated at wake. Established at the 2026-09-03 trim to end that. **Sealed, never regenerate:** [bones](../governance/fool/seed/FOOL-BONES-2026-08-25.md) · [soul](../governance/fool/seed/FOOL-SOUL-2026-08-25.md). Doctrine: [BUDDY-PATTERN v2](../governance/fool/BUDDY-PATTERN-jurist-draft-v2-2026-08-22.md). Spec: [TARBUCKLE-SPEC-13.1](../governance/fool/TARBUCKLE-SPEC-13.1-2026-08-25.md). ## Chronological log ### 2026-09-11 — the self-test wrote the live log, and `tick_id` has a site - **PENDING-184 `[FIX]`, filed before it was built.** The steward's words were *'file it before you build it'*. Filed at `2af4335`, built at `37a2c86`. - **The fault.** The D block of `tarbuckle-body.py --selftest` called `_log_draw`, whose path was hard-bound to `~/.claude/state/tarbuckle-draws.jsonl`. So each self-test run put a fake tick into the live occurrence log. At least two stray records, on 09-09 and 09-10, match self-test runs in the transcripts by time. - **The fix.** `DRAWS` became a module global. The D block rebinds it to a temporary directory and restores it in `finally`. - **Two controls.** **D9**: the live log's fingerprint is unchanged. **D10**: the redirected log received exactly one `tick`, the check an absence-only control lacks. - **Mutations.** M1 (rebinding deleted) fails D9 and D10. M2 (writes sent to devnull) fails D10 only. - **Measured outside the self-test**, with the real `HOME`: the live log's SHA is unchanged. - **Census of the class, run under a fake `HOME`.** Of the five Tarbuckle self-tests, only `body` wrote live state. A fleet-wide census would be `[HARDENING]`, and it is **not filed**. - **PENDING-182 ADDENDA 1–2.** - `tick_id` is an OS-random 63-bit int, minted in `fire_tick` and passed to the child as `argv[3]`. It is `null` for seam, wrap and invoke. - My concurrency premise is withdrawn: 0 of 746 ticks share a second. - There are two writers, `_log_draw` and `log_event`. - PENDING-184 was a precondition, and it is now met. **The item awaits a ruling.** ### 2026-09-09 night — the verdicts sitting: two answered, two unanswerable, and the cap question receded **REVIEWED-137 placed (`3d340f6`)** — the four judgments PENDING-169 §5 reserved, produced under REVIEWED-136's measure/verdict split. Drafted by the executor, placed and corrected (A–F) by the steward, jurist-signed throughout. **1 · PRESENCE — ANSWERED.** The position is occupied **on a per-machine clock, and its occupancy is uncorrelated with where the work is.** Coverage **12 of 13** occasions (13/14 counting the measuring session — a perishable pair, 11.62 → 12.07 during the sitting), gap runs **[1]**. `tarbuckle-last-tick` is **one path with no session key**, so the draw is a race won by **render frequency**: on 08-31 two abandoned panes took **48** draws, the 16.7 MB working session **7**, a 50-min human session **1**. Only 15% of draws / 30% of lines land within 30 min of activity in their own session. ⚠ **`736ef3cb` is the one genuine miss and it is TICK STARVATION** — never asked, no draw, no rejection, **no trace**; invisible to every instrument built. ⚠ **`Stop` fires for `claude -p`, so 3 of 10 wrap runs went into mumble subprocesses.** The executor had certified `0 of 89 into mumbles` as *structural*; that was FALSE — the control tested the invocation log (status-line surfaces only) and was claimed across all surfaces. Overturned by transcript hook records. **The jurist accepted the structural reading too.** **2 · FIDELITY RETROSPECTIVE — UNANSWERABLE, and the reason displaced the question.** Terminal draws are written by a **detached child**, so a rejection's timestamp is its *completion*. Pairing rejections to their tick: **6 of 50 pairable on the five 14-word days; 51 of 52 elsewhere.** **A partition with no exceptions in either direction over 14 days — the pile-up and the lag are ONE phenomenon.** The attended split is **VOID** (no rates recorded — that interval over that corpus is the seven-hours class). **08-31 kills the temporal framing**: 6/6 pairable, zero 14-word, between two heavy days. **It toggles; it is not W1 vs W2 and it did not "improve after 09-02".** ⚠ Mechanism **NOT ESTABLISHED**: `timeout=120` rules out generator latency; sleep unsupported; render-volume strong but not monotone — **and its attraction is its plausibility** (PENDING-164). ⚠ **`log_rejection` timestamps at write time**, so the **banked per-day series is binned by child-completion** on exactly the days that matter. The corpus that could check it is gone. **Every cap argument ever made about this system rests on a confounded evidence base.** **3 · CONDITION-G INSTRUMENT — DESIGNED, NOT AUTHORIZED. Condition G stands.** The decisive finding came **entirely from timestamps, counts and surface labels** — the content field bought nothing and cost the corpus. **Net-negative, established by the case.** The instrument is an **extension of `log_event`, not a successor to `log_rejection`** (which routes it into the settled category — `tarbuckle-draws.jsonl` is outside the deletion order). Fields: **`tick_id`** (named by two failures, not designed) · `words` · `reason_category` (replacing `why`, which reproduces content by construction via `echoes_soul()`). Structurally content-free = **the writer never holds the content.** ⚠ Bounded: the hard form was **not needed for this case**; **no case requiring it has been constructed.** NOT "condition G dissolves". ⚠ Must be **paired with a non-event measure** — a rejection counter cannot see tick starvation. **4 · WRAP — cost answered, cap UNANSWERABLE.** **80 s of blocking `Stop` per fortnight; 18 s (30% of occasions, 23% of time) marked the end of the fool's own generator.** Seven real thresholds at ~7 s is proportionate. `[FIX]` available and **not applied**: gate on `TARBUCKLE_CHILD` (already set and passed by the body) — ⚠ gives that variable a second meaning, needs a comment naming both. **PENDING-180 `[FIX]` executed on steward release** (`049ca57`, addendum `e611bee`). Census: **15 positive-form source assertions across 8 governed scripts, exactly ONE self-planted needle** — the one filed; the polarity argument predicted siblings, there are none. `source_has()` built beside `source_lacks()`; `seam` repaired (filed `:164`, defective `:165`, repaired `:176`), aimed at the **writer's** file. **Mutation-verified**: repaired FAILS both mutations, old form PASSES the one that matters. ⚠ **THE MECHANISM IS NOT WHOLE.** `source_has`/`source_lacks` assemble the **assertion's** needle from parts; **nothing stops prose in the same file planting a contiguous copy** — the executor did exactly that in the comment explaining the bug, caught only by mutation (selftest was 17/17 throughout). **REVIEWED-137 §6 declares the repair verified.** **Party data.** ⚠ **Jurist: THREE closures in the direction requiring no further work**, the third *inside the sitting where the executor had flagged the first two*. Live for PENDING-89 and Constraint 6. **Executor:** the `0 of 89` frame-inheritance · a denominator arithmetic error · a positive control asserted rather than established · a census carrying the defect it audited · the re-planted needle · and **the unit of my verification predicate mismatching the unit of my claim, 3×**. ⚠ **PENDING-168's count NOT incremented** despite a fourth occurrence — the unit is the steward's. **Open, ranked:** the condition-G ruling (+ non-event measure) · PENDING-168's count unit (PENDING-180 dischargeable on it) · the assertion-vs-file gap · the `TARBUCKLE_CHILD` `[FIX]` · PENDING-179's two-prompt predicate · the render-volume hypothesis, first to test, plausibility flagged as the hazard. ### 2026-09-03 — tracker established; state relocated from the MEMORY.md index ⚠ **Provenance: the block below is the verbatim MEMORY.md index line**, moved here rather than rewritten. It carries the 2026-08-31 substrate correction — the line had previously asserted "NOTHING WIRED", false on all three clauses — and the re-measured counts. Nothing is restated here that the line does not say; the index now holds a one-line pointer to this file. - [The Fool — **Tarbuckle**](../governance/fool/seed/FOOL-BONES-2026-08-25.md) — **THE ACTIVE WORKSTREAM.** Bones derived **once** 2026-08-25 (peak SUCCESSION 96 · dump ABSENCE 8); **name + soul sealed, never regenerate** ([soul](../governance/fool/seed/FOOL-SOUL-2026-08-25.md)). Doctrine = `BUDDY-PATTERN-jurist-draft-v2-2026-08-22.md`; **§8 has no blanks** (20 min · frequency UNKNOWN · empty-window consumes · body correlates with nothing). ⚠ **CORRECTED 2026-08-31 — the line here read "NOTHING WIRED — no `statusLine`, no script, §13.1 spec unwritten" and was FALSE ON ALL THREE CLAUSES.** Substrate, verified today: `.claude/settings.json` runs `dotfiles/scripts/tarbuckle-body.py` as `statusLine` (refreshInterval 60) · **5** scripts (`body`·`invoke`·`mumble`·`seam`·`wrap`) · `TARBUCKLE-SPEC-13.1-2026-08-25.md` exists · **7** state files under `~/.claude/state/`. **It is wired and running.** ⚠ Found by a concurrent sibling session, which held the correction rather than racing this one's memory write; its counts (7 scripts, 6 state files) were themselves off in both directions — **re-measured here, not relayed.** What is unbuilt is a separate question and this line no longer answers it. Trial 09 VOID (REVIEWED-124), void now recorded in all three docs. ⚠ Subject matter lives in **CapableMind-AI**, instruments in **dotfiles**, and nothing in CapableMind points back.