Files
dotfiles/ARCHITECTURE.md
T
David F GliddenandClaude 1f543d195b Add comprehensive system enhancements and shell configurations
Following the μέτρον principle of durable, thoughtful solutions:

Shell Configuration:
- Add refined .zshrc with modular architecture
- Include .p10k.zsh for Powerlevel10k prompt
- Add .zprofile for login shell configuration
- Update aliases with new dotfiles management tools

System Management Tools:
- safe-update.sh: System updates with rollback protection
- detect-drift.sh: Configuration drift detection
- system-health.sh: Comprehensive health monitoring
- generate-lockfile.sh: Version tracking for reproducibility

Documentation:
- ARCHITECTURE.md: Philosophy and design rationale
- USAGE.md: Practical guide and troubleshooting

Other Updates:
- Update symlinks.sh to manage all config files
- Add .vimrc configuration
- Create Brewfile.lock for version pinning

These enhancements provide visibility, safety, and maintainability
while following the prime directive of prioritizing durability.

🖖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-27 22:27:54 +02:00

8.3 KiB

Dotfiles Architecture Documentation

Philosophy: μέτρον γὰρ καὶ συμμετρία καὶ τὸ πρόσφορον

This dotfiles system is built upon the prime directive: "Prioritize durable, thoughtful solutions over expedient ones". The Greek principle of μέτρον (measure), συμμετρία (proportion), and τὸ πρόσφορον (what is fitting) guides every architectural decision.

Core Principles

1. Durability Over Convenience

  • Long-term thinking: Solutions that remain stable across system updates
  • Graceful degradation: System continues to function when components are missing
  • Version stability: Lockfiles and rollback mechanisms prevent breaking changes

2. Thoughtful Modularization

  • Single responsibility: Each script and configuration file has a clear purpose
  • Composable design: Components work independently and together
  • Context awareness: System adapts behavior based on working directory and usage patterns

3. Measured Implementation

  • What is fitting: Tools and configurations chosen for specific needs, not trends
  • Proportional complexity: Simple solutions for simple problems
  • Observable behavior: System provides visibility into its operations

System Architecture

~/dotfiles/
├── engage                    # Master deployment script (Star Trek theme)
├── Brewfile                  # Package definitions (120+ tools)
├── Brewfile.lock            # Version snapshots for reproducibility
├── shell/                   # Modular shell configuration
│   ├── .zshrc              # Main shell config (replaces ~/.zshrc)
│   ├── environment.zsh     # Environment variables
│   ├── paths.zsh           # PATH management with deduplication  
│   ├── aliases.zsh         # Command aliases
│   ├── functions.zsh       # Custom functions
│   └── .zsh-plugins.txt    # Plugin manifest for Antidote
├── scripts/                # Automation and maintenance
│   ├── backup-ssh-keys.sh  # GPG encryption for sensitive data
│   ├── generate-lockfile.sh# Version tracking
│   ├── safe-update.sh      # Update with rollback protection
│   ├── detect-drift.sh     # Configuration consistency checking
│   ├── system-health.sh    # Observability and monitoring
│   └── set-macos-defaults.sh# System preferences automation
└── git/                    # Git configuration and hooks
    ├── .gitconfig          # Git settings
    └── hooks/              # Security and validation hooks

Component Design Rationale

The "engage" Script

Inspiration: Captain Picard's decisive command
Purpose: Single-entry point for complete system deployment
Design: Interactive menu with phased installation and pre-flight checks

# Philosophy: Make complex deployment feel effortless
echo "🖖 ENGAGE - Make it so!"

Shell Configuration Strategy

Problem: Monolithic .zshrc files become unmaintainable
Solution: Modular architecture with graceful degradation

Key decisions:

  • environment.zsh: Sets the foundation (XDG, locale, history)
  • paths.zsh: Intelligent PATH building with deduplication
  • functions.zsh: Enhanced system utilities (sysupdate, deep_clean, vault integration)
  • Context awareness: Behavior adapts to work/chamber/vault/dotfiles environments

Package Management Philosophy

Brewfile Design: Organized by purpose, not alphabetically

# Development tools come first (core workflow)
brew "git"
brew "ripgrep" 
brew "fzf"

# Productivity tools second (daily usage)
brew "obsidian"
brew "raycast"

Rationale: Reflects actual importance hierarchy, not convenience

Version Control Strategy

Three-tier approach:

  1. Brewfile: What should be installed
  2. Brewfile.lock: What versions are currently installed
  3. safe-update.sh: How to update safely with rollback

This mirrors software engineering best practices (requirements → lockfile → deployment).

Security Architecture

Defense in depth:

  • SSH key backup: GPG-encrypted with restore instructions
  • Git hooks: Prevent accidental secret commits
  • Firewall monitoring: System health checks include security posture
  • Sensitive data handling: Never commit secrets, always encrypt backups

Advanced Features

Configuration Drift Detection

Problem: Systems inevitably drift from their defined state
Solution: Automated comparison between actual and intended configuration

Three drift types monitored:

  1. Package drift: Installed vs. Brewfile definitions
  2. Configuration drift: Live files vs. dotfiles repository
  3. System drift: Current macOS settings vs. defaults script

System Health Monitoring

Observability philosophy: "You can't manage what you can't measure"

Monitored components:

  • Resources: CPU, memory, disk usage with intelligent thresholds
  • Services: Critical tools (Homebrew, Git, Zsh, SSH) health status
  • Packages: Total count, outdated packages, broken installations
  • Shell performance: Load time and plugin count impact
  • Network: Internet, DNS, GitHub connectivity for development
  • Security: SSH keys, GPG keys, firewall status

Context-Aware Behavior

Philosophy: Tools should adapt to how you work

Context detection:

# Automatic context detection based on PWD
detect_context() {
    case "$PWD" in
        *work*) CURRENT_CONTEXT="work" ;;
        *chamber*) CURRENT_CONTEXT="chamber" ;;
        *vault*) CURRENT_CONTEXT="vault" ;;
        *dotfiles*) CURRENT_CONTEXT="dotfiles" ;;
        *) CURRENT_CONTEXT="general" ;;
    esac
}

Context-specific behaviors:

  • Work: Enhanced productivity shortcuts, stricter security
  • Chamber: Creative workspace optimizations
  • Vault: Knowledge management integration (Obsidian shortcuts)
  • Dotfiles: System administration tools prominently available

Error Handling Philosophy

Graceful Degradation

Principle: System remains functional when components fail

Implementation patterns:

# Tool availability checks
if command -v fzf >/dev/null; then
    eval "$(fzf --zsh)"
elif [[ -z "${P10K_INSTANT_PROMPT-}" ]]; then
    echo "⚠️  FZF not available - install with: brew install fzf"
fi

Rollback Capabilities

Safe-update pattern: Always create recovery points before changes

  • Snapshots: Package states and configuration backups
  • Health testing: Verify system function after updates
  • Automatic rollback: Return to last known good state on failure

Performance Considerations

Shell Startup Optimization

Problem: Plugin-heavy shells can have slow startup times
Solutions:

  • Instant prompt: Powerlevel10k instant prompt for immediate responsiveness
  • Conditional loading: Only load tools that are actually installed
  • Fast mode: Non-interactive shells bypass expensive operations

Plugin Management Strategy

Antidote over Oh My Zsh: Faster, more reliable plugin management Curated plugin list: Only essential plugins, regularly audited Performance monitoring: Track shell load times and plugin impact

Future Evolution

Extensibility Points

Plugin architecture: Additional modules can be added to shell/ directory Hook system: Custom scripts can extend behavior at defined points Context expansion: New work environments easily added to context detection

Maintenance Strategy

Regular audits: Quarterly review of tools and configurations Dependency tracking: Monitor for deprecated packages or breaking changes Documentation updates: Architecture docs updated with any design changes

Conclusion

This dotfiles system embodies the principle that good tools become invisible. By prioritizing durability, thoughtfulness, and proportionality, it creates a computing environment that supports focused work rather than demanding constant maintenance.

The μέτρον principle ensures that every component has the right measure of complexity - no more, no less - for its intended purpose. This creates a system that remains stable and usable across years of computing, embodying the prime directive of durable, thoughtful solutions.


"The best tools are the ones you forget you're using."
"Make it so!" - Captain Jean-Luc Picard