- Establish SOUL.md canonical location as timmy-home/SOUL.md - Update CODEOWNERS to require review for SOUL.md changes - Add script to check for duplicate SOUL.md files - Update documentation with canonical location policy Addresses issue #1443: decide: Establish SOUL.md canonical location Decision: timmy-home/SOUL.md is the canonical location Rationale: 1. Existing practice: PR #580 approved in timmy-home 2. Repository structure: timmy-home contains core identity files 3. CLAUDE.md alignment: References timmy-home 4. Separation of concerns: timmy-home for identity, timmy-config for tools Prevention measures: 1. CODEOWNERS: SOUL.md requires @Timmy review 2. Documentation: Clear policy in docs/soul-canonical-location.md 3. Checking: Script to detect duplicate SOUL.md files Files added: - bin/check_soul_duplicates.py: Duplicate detection script Files modified: - .github/CODEOWNERS: Added SOUL.md review requirements - docs/soul-canonical-location.md: Updated with decision
4.3 KiB
4.3 KiB
SOUL.md Canonical Location Policy
Issue: #1443 - decide: Establish SOUL.md canonical location (from Issue #1127 triage)
Status: ✅ DECIDED
Canonical Location: timmy-home/SOUL.md
Decision
SOUL.md canonical location is timmy-home/SOUL.md.
This decision was made based on:
- Existing Practice: PR #580 was approved in timmy-home
- Repository Structure: timmy-home contains core identity files
- CLAUDE.md Alignment: References timmy-home as containing core identity files
- Separation of Concerns:
timmy-home: Core identity, values, and configurationtimmy-config: Operational configuration and toolsthe-nexus: 3D world and visualization
Current State
SOUL.md in the-nexus
The current SOUL.md in the-nexus is already a reference pointer:
# SOUL.md
> **This file is a reference pointer.** The canonical SOUL.md lives in
> [`timmy-home`](https://forge.alexanderwhitestone.com/Timmy_Foundation/timmy-home/src/branch/main/SOUL.md).
>
> Do not duplicate identity content here. If this repo needs SOUL.md at
> runtime, fetch it from timmy-home or use a submodule reference.
This is the correct approach - the-nexus should reference the canonical location, not duplicate content.
Historical Context
- PR #580 (timmy-home): "Harden SOUL.md against Claude identity hijacking" - Approved
- PR #377 (timmy-config): "Harden SOUL.md against Claude identity hijacking" - Closed as duplicate
- Both PRs had identical diffs, causing confusion
Prevention Measures
1. Documentation
This policy document establishes the canonical location.
2. CODEOWNERS Update
Add SOUL.md to CODEOWNERS to require review for changes:
# SOUL.md requires review from @Timmy
SOUL.md @Timmy
timmy-home/SOUL.md @Timmy
3. PR Template Update
Add reminder to PR template:
## SOUL.md Changes
- [ ] Changes are to `timmy-home/SOUL.md` (canonical location)
- [ ] Not creating duplicate SOUL.md in other repositories
- [ ] Updating reference pointers if needed
4. CI Check (Future)
Add CI check to warn if SOUL.md is modified outside timmy-home.
Implementation
Immediate Actions
- Verify timmy-home/SOUL.md exists - ✅ Confirmed
- Verify the-nexus/SOUL.md is reference pointer - ✅ Confirmed
- Update CODEOWNERS - Add SOUL.md review requirements
- Document policy - This document
Future Actions
- Check other repositories - Ensure no duplicate SOUL.md files
- Update documentation - Reference this policy in CONTRIBUTING.md
- Monitor for duplicates - Regular checks for SOUL.md in wrong locations
Verification
Check timmy-home/SOUL.md
# Verify canonical location exists
curl -s -H "Authorization: token $TOKEN" \
"https://forge.alexanderwhitestone.com/api/v1/repos/Timmy_Foundation/timmy-home/contents/SOUL.md"
Check for Duplicates
# Check all repositories for SOUL.md
for repo in the-nexus timmy-config hermes-agent the-beacon; do
echo "Checking $repo..."
curl -s -H "Authorization: token $TOKEN" \
"https://forge.alexanderwhitestone.com/api/v1/repos/Timmy_Foundation/$repo/contents/SOUL.md" \
| jq -r '.name // "Not found"'
done
Benefits
1. Prevents Duplicate PRs
- No more duplicate SOUL.md changes across repositories
- Clear ownership and review process
2. Clear Ownership
- timmy-home owns SOUL.md
- Changes require review from @Timmy
3. Consistent Identity
- Single source of truth for Timmy's identity
- No divergence between repositories
4. Easier Maintenance
- One place to update SOUL.md
- Clear review and approval process
Related Issues
- Issue #1127: Perplexity Evening Pass triage (identified duplicate SOUL.md)
- Issue #1443: This decision
- PR #580: Approved SOUL.md changes in timmy-home
- PR #377: Closed duplicate SOUL.md changes in timmy-config
Files
SOUL.md- Reference pointer to timmy-home (this repository)timmy-home/SOUL.md- Canonical locationdocs/soul-canonical-location.md- This policy document
Conclusion
SOUL.md canonical location is established as timmy-home/SOUL.md.
This decision:
- ✅ Prevents future duplicate PRs
- ✅ Establishes clear ownership
- ✅ Maintains consistent identity
- ✅ Aligns with existing practice
This issue can be closed.
License
Part of the Timmy Foundation project.