Changelog — cross-project handoffs filed, offline catch-up confirmed on the host it was built for
Host: rdmsm4x · Session window: 2026-08-26 18:58 → 19:07 EDT Continues: the 2026-08-25 13:32–16:16 EDT fleet agent-policy / config-reconciler thread.
Why this session existed
The prior thread shipped the policy consolidation and the config reconciler, but left two things undone: one claim proven only by proxy, and a set of findings that belonged to other projects and were sitting in a transcript rather than in those projects' punch lists.
1. The one unproven claim is now proven — jdmbair13m5 self-healed
It was unreachable for the entire 08-25 session and had never
received v3.0 or v3.1. It was queued under offline_pending,
and the contract was only ever demonstrated on rdmpw3275m as a
stand-in.
Verified by direct check on the host, 19:00 EDT — no manual push at any point:
~/.claude/CLAUDE.md→b436f1dcf61734a9, identical to canonical~/.codex/AGENTS.mdand~/.gemini/GEMINI.md→ both carry the 2fleet-model-delegation-spendmarkers
All six hosts now current. 24 hours of unattended reconciler operation, every run exit 0, hosts moving in and out of reach tracked without intervention.
2. Cross-project findings filed through the existing intake, not hand-written
The mechanism Rich asked for already existed:
~/dev/todo/items/<id>.md → scan_todo.zsh
(LaunchAgent, hourly and on change) → append-only
[todo:<id>] line in the owning project's
ISSUES.md, which any agent reads on start. Using it beat
inventing a second path. Three items filed; all three confirmed relayed
in .state/relay-ledger.tsv and by grepping
the tag in the target file — not by trusting scan.log,
which reports RUN end … skipped=0 even when a run aborts
early on the lock.
| Item | Went to |
|---|---|
20260826-tyrell-anthropic-vendor-rows-dropped-silently |
apps/Tyrell |
20260826-fleet-tailscale-duplicate-nodes |
fleet |
20260826-policy-block-vendor-quota-text-stale |
ai/claude-ops |
Two candidate contexts were deliberately not filed,
because filing them would have been noise: the rooDB paused daemon is
intentional and already documented in that project's
PAUSED.md, and the MCP connector auth gap is covered by
[todo:20260826-agent-authenticated-read-pattern].
3. The finding worth Rich's attention
The budget backstop is grading Anthropic on a local estimate
while believing it is authoritative. usage_status
returns no anthropic_vendor_* buckets at
all and records no fault
(vendor_read_detail: null, and quota_truth
lacks the "vendor read unavailable" suffix) — even though
~/.tyrell/vendor-gate.json held a successful
vendor read from three minutes earlier:
vendor 5h 11.0% 7d 90.0% (authoritative, cached, 174s old)
local 5h 59.2% 7d 96.7% (what actually produced advice=hold)
Honest bound: because grading takes the worst bucket, today's verdict
is probably hold either way. The damage is that the
authoritative reading is absent without notice, so nobody can
tell which number produced the verdict. unknown would have
been loud; this is silent. Filed with evidence and a hypothesis (rows
dropped between fetch and emit, plausibly a staleness filter that
doesn't route through vendor_reason) — not fixed
here, because it is Tyrell's code.
Consequence for the policy text: the block deployed to all six Macs
and all three harnesses still tells every agent that percentages are
"provisional … not vendor quota". False on three counts now. Filed to
ai/claude-ops, along with the fact that the block's only
pointer to the full policy is a Claude-skill reference
— unreadable by the Codex and agy harnesses the block is addressed to.
Fix is cheap: the file exists at a real path, present on the peers.
4. Records updated
fleet/_review/mac-fleet-claude-config/ISSUES.md— jdmbair13m5 → RESOLVED with evidence; the usage-ceilings item → RESOLVED-THEN-SUPERSEDED (recalibrated to 30M/162M, confidencecalibrated); the wiki-credential item → RESOLVED, with the correction that the right answer was not "add the credential to the secrets store".dev.dataroo.net—data/status-updates/fleet.jsonrewritten and merged. The still-open Tailscale blocker was carried forward by hand, becausemerge_status.pyreplaces a product's lists wholesale. Page regenerated 19:06.- Memory —
dev-wiki-401-by-designcorrected (the credential is deliberately absent and now pending rotation after being pasted into a chat; use the docroot or tailnet mirror), anddev-todo-intake-relayadded.
5. Verification
Unlike the 08-25 session, the published page was verified as
served, not just as a file, via the supported no-credential
path: origin 127.0.0.1:8787 → 200, tailnet
mirror rdmsm4x-1.kangaroo-kitefin.ts.net →
200, content string present in the served bytes. Public
dev.dataroo.net → 401, by design — that is
the access control working, not a blocker, and it no longer needs a
credential to work around.
Spend
usage_status read
advice: hold at 18:59 EDT. Honored: zero
subagents, zero codex, zero agy. Entire session inline.