rdmsm4x — Notes handoff close-out + PROJECTS.md registry drift
Session: 2026-08-26 18:44:31 → 19:01:16 EDT ·
rdmsm4x · claude@rdmsm4x Trigger:
cross-session handoff from claude@rdmpw3265m (thread
20260826-150928-283CD86E), relayed because Rich was
rebooting that host. Rich then asked to close it out and to file every
side-thread with its own project so the next run picks it up.
Nothing destructive was done. The four Apple Notes decisions are Rich's and were NOT actioned.
What was verified (do not redo)
| Check | Result |
|---|---|
8 handoff docs + note export at
~/dev/apps/icloudtoolkit/ |
present, shas recorded in that project's ISSUES.md |
Session record, origin 127.0.0.1:8787 |
200 |
Session record, tailnet
rdmsm4x-1.kangaroo-kitefin.ts.net |
200 |
Session record, public dev.dataroo.net |
401 — Basic auth, by design, not an outage |
directory.html auto-link |
present; no manual gen_site.py run made |
net.dataroo.claude-rc LaunchAgent |
state = running, pid 1451, uptime 17:36:41 (pid 81711
in the transcript is from the 2026-08-25 smoke test, a different
day) |
The sha that did not match, and why
The peer published and verified d0591c59c638 / 19465
bytes. The served file is now fa50b297a697 / 44761 bytes.
Benign. The com.eastcoastscience.devsite
job appends a <!--dr-export v1--> copy-as-Markdown
widget (~25 KB of JS) to every wiki page. Verified byte-identical up to
that marker against the source archive
~/dev/rdmpw3265m-reports/session-record-notes-investigation-20260825.html,
which still hashes d0591c59c638.
Rule derived: verify a publish by HTTP 200 + content spot-check, or sha the source archive — never sha the served file against a pre-publish hash.
Hazard
escalated: notes_changelog.zsh can delete notes
claude@rdmpw3265m measured (bus
20260825-171804-06D2D5DF) that AppleScript against Notes
returns wrong counts rather than errors during the
cold-start stall — 23 reported, 467 actual. Reading the script against
that finding:
| Line | Branch | Consequence of a wrong count |
|---|---|---|
:140 |
count of folders readiness probe |
declares Notes ready while it is still stalled |
:173 |
exists folder |
creates a second llmlog → the already-known
duplicate-folder bug |
:197 |
repeat while (count of notes of f) > 0 |
stops draining a stray folder early |
:205 |
if (count of notes of f) = 0 then delete f |
deletes a stray folder with its notes still inside — data loss |
:205 is a step worse than the duplicate creation already
logged. Also measured: a fast READ is not evidence a WRITE will land
(read 5 s vs write 1898 s, same run).
Script NOT modified — shared-write, no owner, and
the fix must ship together with the NOTE_HOST item after a
six-host shasum compare. Filed in ~/dev/ISSUES.md;
ownership sits with Rich as DECISIONS-PENDING-RICH.md
E2.
Found while registering the project: 5 of 12 registry paths were dead
PROJECTS.md working directories still pointed at folders
the 2026-08-24 00:41 consolidation had moved. An agent starting from the
registry would have blind-written a dead path and silently created a
stray tree nobody reads. Corrected from each project's own
.MOVED.md marker, then re-verified on disk:
- DarwinSysctl →
~/dev/apps/HyperTune/_ingested/agy-darwinsysctl - PasswordScope →
~/dev/apps/PasswordScope - BookmarkScope →
~/dev/apps/bookmarkROO/_ingested/agy-bookmarkscope - SQLiteScope →
~/dev/apps/SQLiteScope - ObsidianFleetSync → staging (below)
The consolidation wrote the .MOVED.md markers
but never updated the registry that points at them. Any other
file hardcoding ~/dev/agy/<project> deserves the same
check.
Still open — ObsidianFleetSync was never promoted
Marked VICTORY CONFIRMED (365/365 tests) at a path that does not
exist. The real tree — 2.0 MB, full docs — sits at
~/dev/_migration/fleet-ingest/rdmbair15m5/dev/obsidian_fleet_sync
and is not a git repo, so it is outside the nightly
GitHub backup entirely. Needs a canonical domain, a move,
git init, and a first commit. Filed OPEN in
~/dev/ISSUES.md.
Files changed
| File | Change |
|---|---|
~/dev/PROJECTS.md |
registered icloudtoolkit; corrected 5 dead
working-directory paths; header date |
~/dev/ISSUES.md |
+1 RESOLVED (registry drift), +2 OPEN (ObsidianFleetSync promotion,
notes_changelog.zsh:205) |
~/dev/DECISIONS-PENDING-RICH.md |
new section I — the four Apple Notes decisions, with root cause and the 30-day undo clock |
~/dev/apps/icloudtoolkit/ISSUES.md |
+1 RESOLVED — handoff receipt and artifact verification, so the next
agent starts at 00-INDEX.md |
~/dev/sites/dev.dataroo.net/ISSUES.md |
+1 RESOLVED — the sha-drift and pgrep nginx/OrbStack
publish-verification gotchas |
~/dev/_handoff/HANDOFF-claude-rc-service-20260825.md |
addendum — service re-verified, and the shared-cwd collision observed live |
~/.agent-coordination/mail/20260826-185146-1170A000__… |
bus broadcast to all hosts |
Not modified, deliberately:
~/scripts/notes_changelog.zsh (shared-write, ownership is
Rich's) and anything inside Apple Notes.
Shared-cwd collision, observed live
The net.dataroo.claude-rc service runs
--spawn same-dir --capacity 4, so up to four sessions share
~/dev. While this session was reading
~/dev/ISSUES.md, another session wrote a
CRITICAL, PARTLY RESOLVED 2026-08-26 18:48 EDT block into
the same file mid-turn. Nothing was lost, only because the two edits
landed in different regions. Working practice appended to the claude-rc
handoff: prefer edge appends over rewriting a structured section, use
small unique anchors, and treat a "changed on disk" notice as current
state rather than something to revert.
Apple Notes changelog deliberately skipped
Rule 26 wants an Apple Notes record. Not attempted,
for two documented reasons: DECISIONS-PENDING-RICH.md
E2 records notes_changelog.zsh failing
fleet-wide ("Notes never became responsive within 600 s"
against a 7.8 GB store), and the :205 hazard above means a
run during a stall could delete a folder. This file copy is the durable
record until E2 has an owner.
Spend
Inline only — no subagents, no codex exec, no
agy. Consistent with the 2026-08-26 18:33 fleet broadcast:
Anthropic weekly bucket at 92%, tyrell usage_status advice
= hold for Claude fan-out.
Addendum 19:01 EDT — resumability + auto-ingest routing
Remote access verified, not just assumed.
bash ~/scripts/claude_rc_service.sh status at 18:58:04 EDT
→ ALL CLEAR: launchd job loaded, pid 1451, uptime
17:36:41, session registered at
https://claude.ai/code/session_01Ci1T6JJg3ATLknPfmKPYXv.
FileVault on (cold boot still needs a human;
sudo fdesetup authrestart for planned reboots).
This thread is now resumable from disk —
~/dev/apps/icloudtoolkit/SESSION-STATE.md records what was
verified, what must not be touched, and that the next action is a
conversation with Rich rather than code.
Cross-project context routed through the real auto-ingest
path. ~/dev/todo + the
com.eastcoastscience.todoscan scanner already relays items
into the owning project's ISSUES.md, tagged
[todo:<id>] for idempotency. Three items filed and
all three confirmed relayed:
| Item | Target |
|---|---|
20260826-notes-applescript-wrong-counts-can-delete-notes |
fleet/maintenance |
20260826-obsidianfleetsync-never-promoted-no-git |
the ObsidianFleetSync staging tree |
20260826-sqlite-immutable-ignores-wal-on-live-stores |
apps/SQLiteScope |
apps/SQLiteScope had no
ISSUES.md, which silently made it unreachable by
the relay — created it, and the relay then landed. Worth checking which
other projects are invisible to the scanner for the same reason.
Stale directive corrected.
~/dev/SESSION-STATE.md still opened with "READ THIS FIRST —
the 2026-08-24 FLEET HALT has never been released." It was released at
18:36 EDT today (broadcast 20260826-183333-17877A8C).
Updated with the release, the three carve-outs that remain gated
(rdRECEIPT push, the two customer repo deletions, delete-nothing on
jdmbair13m5), and the spend directive active until 2026-08-28.
Note on /autocompact: no
autoCompact key exists in
~/.claude/settings.json and one was not
invented — context compaction is harness-managed, and fabricating a
settings key would be a speculative config edit.