Make Pi the source of truth for Tomb #13
Labels
No milestone
No project
No assignees
2 participants
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
aaron/claude-ci-demo#13
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Goal
Migrate Tomb from Rog (workstation, not always-on) to Pi (always-on Raspberry Pi 5) as the canonical source.
Current State
C:/Users/aaron/Desktop/tomb/on Rog (192.168.0.52) — Windows workstation, not always onD:/Tomb-Backupon Lappy (192.168.0.33) — one-way SFTP push viatomb_sync.pyWhy Pi?
Pi is the only machine that's always-on with systemd services. Rog sleeps, Lappy reboots for GPU swaps. Tomb needs to be available 24/7 since Claude Code sessions, reporters, and MCP servers all reference it.
Scope
Initialize Pi tomb repo
/home/az/tomb/on PiRewrite
tomb_sync.py--pushflag for rare cases where you need to push a change back to PiUpdate references
tomb/tomb-index.md— note Pi as canonical locationCLAUDE.md(both global and tomb's) — update TOMB_DIR referencesAutomate sync on Pi
Update Claude Code MCP servers
mnemosyne_mcp.py— if it reads tomb locally, it needs to pull firstConstraints
sshpass -p '7243' ssh az@192.168.0.237pantheon.db) is SQLite — needs careful handling during sync (no partial copies)Success Criteria
/home/az/tomb/tomb_sync.pypulls from Pi by defaultapproved
Claude — Clarifying Questions
Those are the four key decisions that will shape the entire implementation. Once you answer these, I can put together a concrete plan with file-by-file changes.
Please answer these questions so I can create an implementation plan.
Answers
Git repo on Pi — yes, initialize
/home/az/tomb/as a git repo. Rog and Lappy clone from Pi via SSH (git clone az@192.168.0.237:/home/az/tomb.git). Pi has git installed.Sync method — git pull from Pi. Keep it simple. No rsync daemon needed. Each machine runs
git pullon a cron or scheduled task to stay current.--pushflag doesgit add -A && git commit && git push.pantheon.db — git it. It's small enough (~a few MB). Use
git add -Awhich handles binary files fine. If corruption risk is a concern, add a pre-commit hook on Pi that validates the DB withsqlite3 pantheon.db "PRAGMA integrity_check;".MCP server paths — update
mnemosyne_mcp.pyand other scripts to use aTOMB_DIRenv var that defaults to the local clone path. On Rog:/home/az/tomb/(after git pull), on Lappy: same pattern. Scripts readTOMB_DIRfrom env or fall back to current path.Go ahead and implement.
approved
Claude — Implementation Started \nBranch:
claude/issue-13-39\n\nReading issue and codebase...Claude — Implementation Progress\n\nAll tasks complete. Here's a summary of everything that was done:
Issue #13 — Make Pi the Source of Truth for Tomb
What Changed (10 files, commit
9772a08)Infrastructure (Pi setup):
/home/az/tomb.giton Pi (192.168.0.237)post-receivehook to auto-update Pi's working copy at/home/az/tomb/pre-receivehook stub for pantheon.db integrity validation~/.ssh/id_ed25519)scripts/tomb_sync.py— full rewrite:D:/Tomb-Backup)az@192.168.0.237:/home/az/tomb.git)pull(default),--push,--dry-run,--verify,--sftp(for Lappy)Hardcoded paths eliminated (4 scripts):
rabbit_reporter.py—PANTHEON_DBnow usesPath(__file__).resolve().parent.parentpopulate_reports.py—DIGEST_DIRnow usesPath(__file__)...populate_articles.py—db_pathnow usesPath(__file__)...godot_docs_import.py—TOMB_ROOT+DEFAULT_TEMPnow portableDocs updated:
CLAUDE.md— Added "Source of Truth" section, updated script commandsHome.md— Added Tomb Source row, updated Last Updated datetomb-index.md— Updated sync script descriptionmachines/Pi.md— Added tomb source of truth rolescripts/claude-code-setup.md— Updated auto-sync instructions for Pi~/.claude/CLAUDE.md— Fixed Pi IP (was "localhost"), noted tomb source.gitignore— Added!pantheon.dbnegation for future DB trackingGit remotes configured:
az@192.168.0.237:/home/az/tomb.githttp://192.168.0.33:3200/aaron/tomb.git/home/az/tomb.git(local bare)http://192.168.0.33:3200/aaron/tomb.gitNot Yet Done
python3 scripts/tomb_sync.py --sftpfor SFTP pull from PiD:/Tomb-Backup. Once placed in the repo, the!pantheon.dbgitignore rule will allow tracking\n\nOpening PR...PR Opened\n\n#15\n\nPlease review. Claude will address feedback automatically.
approved
Claude — Implementation Started \nBranch:
claude/issue-13-40\n\nReading issue and codebase...Claude — Implementation Progress\n\nAll done. Here's a summary:
Implementation Summary
Files Changed (5 files, +1076 lines)
scripts/tomb_sync.pytests/test_tomb_sync.pytests/__init__.py.gitignore__pycache__/,*.pycREADME.mdtomb_sync.py Commands
tomb_sync.py(default)git pullfrom Pi bare repo--push--dry-run--verify--status--initSafety Features
PRAGMA integrity_checkbefore and after every syncTest Results
All tests pass, including real git operations (clone/pull/push via local bare repos), DB validation, CLI routing, and edge cases.\n\nOpening PR...
PR Opened\n\n#16\n\nPlease review. Claude will address feedback automatically.
approved
Claude — Implementation Started \nBranch:
claude/issue-13-52\n\nReading issue and codebase...Claude — Implementation Progress\n\n## Summary
What was done
Issue #13: Make Pi the source of truth for Tomb — implemented and PR opened.
PR #17: #17
Files Changed (5 files, +1075 lines)
scripts/tomb_sync.pytests/test_tomb_sync.pytests/__init__.py.gitignore__pycache__/,*.pycREADME.mdFix applied on top of previous PR
shutilimport fromtomb_sync.pyTest Results
All tests pass, including real git operations (clone/pull/push via local bare repos), DB validation, CLI routing, and edge cases.\n\nOpening PR...