dots-quantum: Post-Deployment Log

Table of Contents

Overview

Machine: modestus (Arch Linux / Hyprland)
Migration: dotfiles-optimusdots-quantum
Tool: GNU Stow
Date: 2026-03-25

This log documents the post-deployment audit performed after migrating the primary dotfiles repo from dotfiles-optimus to dots-quantum. It captures the diagnostic commands used, findings, and remediation actions required.


Learned the hard way: stow without -t ~ uses parent directory as target. From ~/atelier/_projects/personal/dots-quantum, the default target is ~/atelier/_projects/personal/ — NOT your home directory.

Always use: stow -v -t ~ --no-folding <package>

Quick Deploy for New Machines

Copy-paste ready deployment for clean machines (WSL, other workstations).

Prerequisites

# Clone dots-quantum
cd ~/atelier/_projects/personal
git clone git@github.com:EvanusModestus/dots-quantum.git
cd dots-quantum

Deploy All Packages

# CRITICAL: Must specify -t ~ since we're not in ~ or ~/parent
cd ~/atelier/_projects/personal/dots-quantum

# Core packages
stow -v -t ~ --no-folding bin       # 35 scripts
stow -v -t ~ --no-folding share     # awk, bash, grep, sed libraries
stow -v -t ~ --no-folding shell     # .sh/.fish shell extensions
stow -v -t ~ --no-folding gpg       # gpg.conf, gpg-agent.conf

# App configs
stow -v -t ~ --no-folding himalaya  # email client
stow -v -t ~ --no-folding libvirt   # VM config
stow -v -t ~ --no-folding thunar    # file manager
stow -v -t ~ --no-folding vscodium  # editor settings
stow -v -t ~ --no-folding glow      # markdown viewer
stow -v -t ~ --no-folding htop      # process viewer
stow -v -t ~ --no-folding jj        # jujutsu VCS

# Desktop (skip on WSL/servers)
stow -v -t ~ --no-folding hyprland  # Wayland compositor
stow -v -t ~ --no-folding waybar    # status bar
stow -v -t ~ --no-folding wofi      # launcher

Verify Deployment

# Quick sanity check - all should resolve to dots-quantum
ls -la ~/.local/bin/adoc ~/.local/bin/vault-ssh-sign ~/.config/shell/aliases.sh \
  | awk '{print $NF}' | grep -q dots-quantum && echo "OK" || echo "FAILED"

Machine-Specific Configs (Hyprland)

Each machine needs its own monitors.conf and env-gpu.conf:

# Check GPU(s)
lspci | grep -i vga

# Create machine-specific configs in dots-quantum
vim ~/atelier/_projects/personal/dots-quantum/hyprland/.config/hypr/monitors.conf
vim ~/atelier/_projects/personal/dots-quantum/hyprland/.config/hypr/env-gpu.conf

Diagnostic Commands

Finds symlinks whose target does not exist on the filesystem.

find ~ -maxdepth 6 -xtype l 2>/dev/null

Scans the full home tree and filters for any symlink target containing dotfiles-optimus. Use this to identify stale pre-migration references that stow did not clean up.

find ~ -maxdepth 6 -type l 2>/dev/null | while read link; do
  target=$(readlink "$link")
  case "$target" in
    *dotfiles-optimus*) echo "$link -> $target" ;;
  esac
done
output example from this deployment
/home/evanusmodestus/.local/share/awk -> ../../atelier/_projects/personal/dotfiles-optimus/base/awk/.local/share/awk
/home/evanusmodestus/.local/share/bash -> ../../atelier/_projects/personal/dotfiles-optimus/base/bash-lib/.local/share/bash
/home/evanusmodestus/.local/share/grep-patterns -> ../../atelier/_projects/personal/dotfiles-optimus/base/grep-patterns/.local/share/grep-patterns
/home/evanusmodestus/.local/share/sed -> ../../atelier/_projects/personal/dotfiles-optimus/base/sed-scripts/.local/share/sed
/home/evanusmodestus/.local/bin/borg-backup-synology.sh -> ../../atelier/_projects/personal/dotfiles-optimus/base/bin/.local/bin/borg-backup-synology.sh
/home/evanusmodestus/.local/bin/check-all-repos.sh -> ../../atelier/_projects/personal/dotfiles-optimus/base/bin/.local/bin/check-all-repos.sh
/home/evanusmodestus/.local/bin/manage-all-repos.sh -> ../../atelier/_projects/personal/dotfiles-optimus/base/bin/.local/bin/manage-all-repos.sh
/home/evanusmodestus/.local/bin/typec-util-mount -> ../../atelier/_projects/personal/dotfiles-optimus/base/bin/.local/bin/typec-util-mount
/home/evanusmodestus/.local/bin/typec-util-umount -> ../../atelier/_projects/personal/dotfiles-optimus/base/bin/.local/bin/typec-util-umount
/home/evanusmodestus/.local/bin/gopass-audit -> ../../atelier/_projects/personal/dotfiles-optimus/base/bin/.local/bin/gopass-audit
/home/evanusmodestus/.local/bin/gopass-migrate -> ../../atelier/_projects/personal/dotfiles-optimus/base/bin/.local/bin/gopass-migrate
/home/evanusmodestus/.local/bin/gopass-personal-docs -> ../../atelier/_projects/personal/dotfiles-optimus/base/bin/.local/bin/gopass-personal-docs
/home/evanusmodestus/.local/bin/gopass-query -> ../../atelier/_projects/personal/dotfiles-optimus/base/bin/.local/bin/gopass-query
/home/evanusmodestus/.local/bin/seagate-backup-mount -> ../../atelier/_projects/personal/dotfiles-optimus/base/bin/.local/bin/seagate-backup-mount
/home/evanusmodestus/.local/bin/seagate-backup-umount -> ../../atelier/_projects/personal/dotfiles-optimus/base/bin/.local/bin/seagate-backup-umount
/home/evanusmodestus/.local/bin/seagate-primary-backup -> ../../atelier/_projects/personal/dotfiles-optimus/base/bin/.local/bin/seagate-primary-backup
/home/evanusmodestus/.local/bin/seagate-primary-mount -> ../../atelier/_projects/personal/dotfiles-optimus/base/bin/.local/bin/seagate-primary-mount
/home/evanusmodestus/.local/bin/seagate-primary-snapshot -> ../../atelier/_projects/personal/dotfiles-optimus/base/bin/.local/bin/seagate-primary-snapshot
/home/evanusmodestus/.local/bin/seagate-primary-umount -> ../../atelier/_projects/personal/dotfiles-optimus/base/bin/.local/bin/seagate-primary-umount
/home/evanusmodestus/.local/bin/seagate-sync-to-backup -> ../../atelier/_projects/personal/dotfiles-optimus/base/bin/.local/bin/seagate-sync-to-backup
/home/evanusmodestus/.local/bin/vault-ssh-sign -> ../../atelier/_projects/personal/dotfiles-optimus/base/bin/.local/bin/vault-ssh-sign
/home/evanusmodestus/.local/bin/vault-ssh-test -> ../../atelier/_projects/personal/dotfiles-optimus/base/bin/.local/bin/vault-ssh-test
/home/evanusmodestus/.local/bin/adoc -> ../../atelier/_projects/personal/dotfiles-optimus/base/bin/.local/bin/adoc
/home/evanusmodestus/.config/shell/aliases.fish -> ../../atelier/_projects/personal/dotfiles-optimus/shell/aliases/.config/shell/aliases.fish
/home/evanusmodestus/.config/shell/aliases.sh -> ../../atelier/_projects/personal/dotfiles-optimus/shell/aliases/.config/shell/aliases.sh
/home/evanusmodestus/.config/shell/atelier.fish -> ../../atelier/_projects/personal/dotfiles-optimus/shell/atelier/.config/shell/atelier.fish
/home/evanusmodestus/.config/shell/atelier.shell -> ../../atelier/_projects/personal/dotfiles-optimus/shell/atelier/.config/shell/atelier.shell
/home/evanusmodestus/.config/shell/.links -> ../../atelier/_projects/personal/dotfiles-optimus/shell/functions/.config/shell/.links
/home/evanusmodestus/.config/shell/data-analysis.fish -> ../../atelier/_projects/personal/dotfiles-optimus/shell/functions/.config/shell/data-analysis.fish
/home/evanusmodestus/.config/shell/data-analysis.sh -> ../../atelier/_projects/personal/dotfiles-optimus/shell/functions/.config/shell/data-analysis.sh
/home/evanusmodestus/.config/shell/ollama.fish -> ../../atelier/_projects/personal/dotfiles-optimus/shell/functions/.config/shell/ollama.fish
/home/evanusmodestus/.config/shell/ollama.sh -> ../../atelier/_projects/personal/dotfiles-optimus/shell/functions/.config/shell/ollama.sh
/home/evanusmodestus/.config/shell/secure-vault.fish -> ../../atelier/_projects/personal/dotfiles-optimus/shell/functions/.config/shell/secure-vault.fish
/home/evanusmodestus/.config/shell/secure-vault.sh -> ../../atelier/_projects/personal/dotfiles-optimus/shell/functions/.config/shell/secure-vault.sh
/home/evanusmodestus/.config/shell/vault-wrappers.fish -> ../../atelier/_projects/personal/dotfiles-optimus/shell/functions/.config/shell/vault-wrappers.fish
/home/evanusmodestus/.config/shell/vault-wrappers.sh -> ../../atelier/_projects/personal/dotfiles-optimus/shell/functions/.config/shell/vault-wrappers.sh
/home/evanusmodestus/.config/shell/history-vault.fish -> ../../atelier/_projects/personal/dotfiles-optimus/shell/functions/.config/shell/history-vault.fish
/home/evanusmodestus/.config/shell/history-vault.sh -> ../../atelier/_projects/personal/dotfiles-optimus/shell/functions/.config/shell/history-vault.sh
/home/evanusmodestus/.config/shell/bash.sh -> ../../atelier/_projects/personal/dotfiles-optimus/shell/cli-mastery/.config/shell/bash.sh
/home/evanusmodestus/.config/shell/jq-yq.sh -> ../../atelier/_projects/personal/dotfiles-optimus/shell/cli-mastery/.config/shell/jq-yq.sh
/home/evanusmodestus/.config/shell/python.sh -> ../../atelier/_projects/personal/dotfiles-optimus/shell/cli-mastery/.config/shell/python.sh
/home/evanusmodestus/.config/himalaya/config.toml -> ../../atelier/_projects/personal/dotfiles-optimus/apps/himalaya/.config/himalaya/config.toml
/home/evanusmodestus/.config/libvirt/libvirt.conf -> ../../atelier/_projects/personal/dotfiles-optimus/apps/libvirt/.config/libvirt/libvirt.conf
/home/evanusmodestus/.config/Thunar/accels.scm -> ../../atelier/_projects/personal/dotfiles-optimus/apps/thunar/.config/Thunar/accels.scm
/home/evanusmodestus/.config/Thunar/uca.xml -> ../../atelier/_projects/personal/dotfiles-optimus/apps/thunar/.config/Thunar/uca.xml
/home/evanusmodestus/.config/VSCodium/User/extensions.txt -> ../../../atelier/_projects/personal/dotfiles-optimus/editor/vscodium/.config/VSCodium/User/extensions.txt
/home/evanusmodestus/.config/VSCodium/User/keybindings.json -> ../../../atelier/_projects/personal/dotfiles-optimus/editor/vscodium/.config/VSCodium/User/keybindings.json
/home/evanusmodestus/.config/VSCodium/User/settings.json -> ../../../atelier/_projects/personal/dotfiles-optimus/editor/vscodium/.config/VSCodium/User/settings.json
/home/evanusmodestus/atelier/_projects/personal/bash -> dotfiles-optimus/base/bash
/home/evanusmodestus/atelier/_projects/personal/bin -> dotfiles-optimus/base/bin
/home/evanusmodestus/atelier/_projects/personal/fd -> dotfiles-optimus/base/fd
/home/evanusmodestus/atelier/_projects/personal/fish -> dotfiles-optimus/base/fish
/home/evanusmodestus/atelier/_projects/personal/fzf -> dotfiles-optimus/base/fzf
/home/evanusmodestus/atelier/_projects/personal/git -> dotfiles-optimus/base/git
/home/evanusmodestus/atelier/_projects/personal/gpg -> dotfiles-optimus/base/gpg
/home/evanusmodestus/atelier/_projects/personal/ripgrep -> dotfiles-optimus/base/ripgrep
/home/evanusmodestus/atelier/_projects/personal/ssh -> dotfiles-optimus/base/ssh
/home/evanusmodestus/atelier/_projects/personal/vim -> dotfiles-optimus/base/vim
/home/evanusmodestus/atelier/_projects/personal/zsh -> dotfiles-optimus/base/zsh
/home/evanusmodestus/.gnupg/gpg-agent.conf -> ../atelier/_projects/personal/dotfiles-optimus/base/gpg/.gnupg/gpg-agent.conf
/home/evanusmodestus/.gnupg/gpg.conf -> ../atelier/_projects/personal/dotfiles-optimus/base/gpg/.gnupg/gpg.conf
/home/evanusmodestus/bin/.local -> ../atelier/_projects/personal/dotfiles-optimus/base/bin/.local
/home/evanusmodestus/.dotfiles -> /home/evanusmodestus/atelier/_projects/personal/dotfiles-optimus
/home/evanusmodestus/dotfiles-backup-20260325/conflicts/git/ignore -> ../../atelier/_projects/personal/dotfiles-optimus/base/git/.config/git/ignore
/home/evanusmodestus/dotfiles-backup-20260325/conflicts/btop/themes/catppuccin_mocha.theme -> ../../../atelier/_projects/personal/dotfiles-optimus/apps/btop/.config/btop/themes/catppuccin_mocha.theme
/home/evanusmodestus/dotfiles-backup-20260325/conflicts/btop/btop.conf -> ../../atelier/_projects/personal/dotfiles-optimus/apps/btop/.config/btop/btop.conf
/home/evanusmodestus/dotfiles-backup-20260325/conflicts/fastfetch/config.jsonc -> ../../atelier/_projects/personal/dotfiles-optimus/apps/fastfetch/.config/fastfetch/config.jsonc
/home/evanusmodestus/dotfiles-backup-20260325/conflicts/fastfetch/cyberpunk.jsonc -> ../../atelier/_projects/personal/dotfiles-optimus/apps/fastfetch/.config/fastfetch/cyberpunk.jsonc
/home/evanusmodestus/dotfiles-backup-20260325/conflicts/fastfetch/everything.jsonc -> ../../atelier/_projects/personal/dotfiles-optimus/apps/fastfetch/.config/fastfetch/everything.jsonc
/home/evanusmodestus/dotfiles-backup-20260325/conflicts/fastfetch/glitch.jsonc -> ../../atelier/_projects/personal/dotfiles-optimus/apps/fastfetch/.config/fastfetch/glitch.jsonc
/home/evanusmodestus/dotfiles-backup-20260325/conflicts/fastfetch/hardware.jsonc -> ../../atelier/_projects/personal/dotfiles-optimus/apps/fastfetch/.config/fastfetch/hardware.jsonc
/home/evanusmodestus/dotfiles-backup-20260325/conflicts/fastfetch/hexagon.jsonc -> ../../atelier/_projects/personal/dotfiles-optimus/apps/fastfetch/.config/fastfetch/hexagon.jsonc
/home/evanusmodestus/dotfiles-backup-20260325/conflicts/fastfetch/matrix.jsonc -> ../../atelier/_projects/personal/dotfiles-optimus/apps/fastfetch/.config/fastfetch/matrix.jsonc
/home/evanusmodestus/dotfiles-backup-20260325/conflicts/fastfetch/minimal.jsonc -> ../../atelier/_projects/personal/dotfiles-optimus/apps/fastfetch/.config/fastfetch/minimal.jsonc
/home/evanusmodestus/dotfiles-backup-20260325/conflicts/fastfetch/network.jsonc -> ../../atelier/_projects/personal/dotfiles-optimus/apps/fastfetch/.config/fastfetch/network.jsonc
/home/evanusmodestus/dotfiles-backup-20260325/conflicts/fastfetch/pyramid.jsonc -> ../../atelier/_projects/personal/dotfiles-optimus/apps/fastfetch/.config/fastfetch/pyramid.jsonc
/home/evanusmodestus/dotfiles-backup-20260325/conflicts/fastfetch/rice-ultra.jsonc -> ../../atelier/_projects/personal/dotfiles-optimus/apps/fastfetch/.config/fastfetch/rice-ultra.jsonc
/home/evanusmodestus/dotfiles-backup-20260325/conflicts/fastfetch/wave.jsonc -> ../../atelier/_projects/personal/dotfiles-optimus/apps/fastfetch/.config/fastfetch/wave.jsonc
/home/evanusmodestus/dotfiles-backup-20260325/conflicts/ghostty/config -> ../../atelier/_projects/personal/dotfiles-optimus/terminal/ghostty/.config/ghostty/config
/home/evanusmodestus/dotfiles-backup-20260325/conflicts/kitty/kitty.conf -> ../../atelier/_projects/personal/dotfiles-optimus/terminal/kitty/.config/kitty/kitty.conf
/home/evanusmodestus/dotfiles-backup-20260325/conflicts/kitty/kitty.conf.bak -> ../../atelier/_projects/personal/dotfiles-optimus/terminal/kitty/.config/kitty/kitty.conf.bak
/home/evanusmodestus/dotfiles-backup-20260325/conflicts/lazygit/config.yml -> ../../atelier/_projects/personal/dotfiles-optimus/apps/lazygit/.config/lazygit/config.yml
/home/evanusmodestus/dotfiles-backup-20260325/conflicts/mako/README.md -> ../../atelier/_projects/personal/dotfiles-optimus/wm/mako/.config/mako/README.md
/home/evanusmodestus/dotfiles-backup-20260325/conflicts/waybar/README.md -> ../../atelier/_projects/personal/dotfiles-optimus/wm/waybar/.config/waybar/README.md
/home/evanusmodestus/dotfiles-backup-20260325/conflicts/waybar/config -> ../../atelier/_projects/personal/dotfiles-optimus/wm/waybar/.config/waybar/config
/home/evanusmodestus/dotfiles-backup-20260325/conflicts/waybar/scripts/notification.sh -> ../../../atelier/_projects/personal/dotfiles-optimus/wm/waybar/.config/waybar/scripts/notification.sh
/home/evanusmodestus/dotfiles-backup-20260325/conflicts/waybar/scripts/waybar-battery-info.sh -> ../../../atelier/_projects/personal/dotfiles-optimus/wm/waybar/.config/waybar/scripts/waybar-battery-info.sh
/home/evanusmodestus/dotfiles-backup-20260325/conflicts/waybar/scripts/waybar-cpu-info.sh -> ../../../atelier/_projects/personal/dotfiles-optimus/wm/waybar/.config/waybar/scripts/waybar-cpu-info.sh
/home/evanusmodestus/dotfiles-backup-20260325/conflicts/waybar/scripts/waybar-cpu-kill.sh -> ../../../atelier/_projects/personal/dotfiles-optimus/wm/waybar/.config/waybar/scripts/waybar-cpu-kill.sh
/home/evanusmodestus/dotfiles-backup-20260325/conflicts/waybar/scripts/waybar-memory-clear.sh -> ../../../atelier/_projects/personal/dotfiles-optimus/wm/waybar/.config/waybar/scripts/waybar-memory-clear.sh
/home/evanusmodestus/dotfiles-backup-20260325/conflicts/waybar/scripts/waybar-memory-info.sh -> ../../../atelier/_projects/personal/dotfiles-optimus/wm/waybar/.config/waybar/scripts/waybar-memory-info.sh
/home/evanusmodestus/dotfiles-backup-20260325/conflicts/waybar/scripts/waybar-network-info.sh -> ../../../atelier/_projects/personal/dotfiles-optimus/wm/waybar/.config/waybar/scripts/waybar-network-info.sh
/home/evanusmodestus/dotfiles-backup-20260325/conflicts/waybar/scripts/waybar-temp-info.sh -> ../../../atelier/_projects/personal/dotfiles-optimus/wm/waybar/.config/waybar/scripts/waybar-temp-info.sh
/home/evanusmodestus/dotfiles-backup-20260325/conflicts/waybar/scripts/battery-monitor.sh -> ../../../atelier/_projects/personal/dotfiles-optimus/wm/waybar/.config/waybar/scripts/battery-monitor.sh
/home/evanusmodestus/dotfiles-backup-20260325/conflicts/waybar/style.css -> ../../atelier/_projects/personal/dotfiles-optimus/wm/waybar/.config/waybar/style.css
/home/evanusmodestus/dotfiles-backup-20260325/conflicts/wofi/README.md -> ../../atelier/_projects/personal/dotfiles-optimus/wm/wofi/.config/wofi/README.md
/home/evanusmodestus/dotfiles-backup-20260325/conflicts/wofi/config -> ../../atelier/_projects/personal/dotfiles-optimus/wm/wofi/.config/wofi/config
/home/evanusmodestus/dotfiles-backup-20260325/conflicts/wofi/style.css -> ../../atelier/_projects/personal/dotfiles-optimus/wm/wofi/.config/wofi/style.css
/home/evanusmodestus/dotfiles-backup-20260325/conflicts/awklib -> ../../atelier/_projects/personal/dotfiles-optimus/base/bin/.local/bin/awklib
/home/evanusmodestus/dotfiles-backup-20260325/conflicts/biz -> ../../atelier/_projects/personal/dotfiles-optimus/base/bin/.local/bin/biz
/home/evanusmodestus/dotfiles-backup-20260325/conflicts/fxa -> ../../atelier/_projects/personal/dotfiles-optimus/base/bin/.local/bin/fxa
/home/evanusmodestus/dotfiles-backup-20260325/conflicts/geodist -> ../../atelier/_projects/personal/dotfiles-optimus/base/bin/.local/bin/geodist
/home/evanusmodestus/dotfiles-backup-20260325/conflicts/grp -> ../../atelier/_projects/personal/dotfiles-optimus/base/bin/.local/bin/grp
/home/evanusmodestus/dotfiles-backup-20260325/conflicts/ip-extract -> ../../atelier/_projects/personal/dotfiles-optimus/base/bin/.local/bin/ip-extract
/home/evanusmodestus/dotfiles-backup-20260325/conflicts/ly2pdf -> ../../atelier/_projects/personal/dotfiles-optimus/base/bin/.local/bin/ly2pdf
/home/evanusmodestus/dotfiles-backup-20260325/conflicts/pawk -> ../../atelier/_projects/personal/dotfiles-optimus/base/bin/.local/bin/pawk
/home/evanusmodestus/dotfiles-backup-20260325/conflicts/pd -> ../../atelier/_projects/personal/dotfiles-optimus/base/bin/.local/bin/pd
/home/evanusmodestus/dotfiles-backup-20260325/conflicts/pd-heredoc -> ../../atelier/_projects/personal/dotfiles-optimus/base/bin/.local/bin/pd-heredoc
/home/evanusmodestus/dotfiles-backup-20260325/conflicts/pd-viz -> ../../atelier/_projects/personal/dotfiles-optimus/base/bin/.local/bin/pd-viz
/home/evanusmodestus/dotfiles-backup-20260325/conflicts/secrets-scan -> ../../atelier/_projects/personal/dotfiles-optimus/base/bin/.local/bin/secrets-scan
/home/evanusmodestus/dotfiles-backup-20260325/conflicts/sedx -> ../../atelier/_projects/personal/dotfiles-optimus/base/bin/.local/bin/sedx
/home/evanusmodestus/dotfiles-backup-20260325/conflicts/wofi-clipboard-delete.sh -> ../../atelier/_projects/personal/dotfiles-optimus/base/bin/.local/bin/wofi-clipboard-delete.sh
/home/evanusmodestus/dotfiles-backup-20260325/conflicts/wofi-power-menu.sh -> ../../atelier/_projects/personal/dotfiles-optimus/base/bin/.local/bin/wofi-power-menu.sh
/home/evanusmodestus/dotfiles-backup-20260325/conflicts/wofi-wifi-menu.sh -> ../../atelier/_projects/personal/dotfiles-optimus/base/bin/.local/bin/wofi-wifi-menu.sh
readlink ~/.local/bin/principia-publish

Audit Findings (2026-03-25)

~/.claude — CLEAN

All managed symlinks in ~/.claude/ correctly resolve to dots-quantum. No stale optimus references. Notable: credentials.json is absent (expected — OAuth credentials are not stow-managed).

~/.claude symlink inventory
Symlink Target

agents

dots-quantum/claude/.claude/agents

CLAUDE.md

dots-quantum/claude/.claude/CLAUDE.md

hooks

dots-quantum/claude/.claude/hooks

hooks.json

dots-quantum/claude/.claude/hooks.json

keybindings.json

dots-quantum/claude/.claude/keybindings.json

rules

dots-quantum/claude/.claude/rules

settings.json

dots-quantum/claude/.claude/settings.json

skills

dots-quantum/claude/.claude/skills

~/.local/bin — STALE OPTIMUS REFERENCES

The following binaries are still symlinked into dotfiles-optimus. These are live PATH entries and must be re-homed to dots-quantum or removed if deprecated.

Symlink Stale Target

borg-backup-synology.sh

dotfiles-optimus/base/bin/…​

check-all-repos.sh

dotfiles-optimus/base/bin/…​

manage-all-repos.sh

dotfiles-optimus/base/bin/…​

typec-util-mount

dotfiles-optimus/base/bin/…​

typec-util-umount

dotfiles-optimus/base/bin/…​

gopass-audit

dotfiles-optimus/base/bin/…​

gopass-migrate

dotfiles-optimus/base/bin/…​

gopass-personal-docs

dotfiles-optimus/base/bin/…​

gopass-query

dotfiles-optimus/base/bin/…​

seagate-backup-mount

dotfiles-optimus/base/bin/…​

seagate-backup-umount

dotfiles-optimus/base/bin/…​

seagate-primary-backup

dotfiles-optimus/base/bin/…​

seagate-primary-mount

dotfiles-optimus/base/bin/…​

seagate-primary-snapshot

dotfiles-optimus/base/bin/…​

seagate-primary-umount

dotfiles-optimus/base/bin/…​

seagate-sync-to-backup

dotfiles-optimus/base/bin/…​

vault-ssh-sign

dotfiles-optimus/base/bin/…​

vault-ssh-test

dotfiles-optimus/base/bin/…​

adoc

dotfiles-optimus/base/bin/…​

~/.local/share — STALE OPTIMUS REFERENCES

Symlink Stale Target

awk

dotfiles-optimus/base/awk/…​

bash

dotfiles-optimus/base/bash-lib/…​

grep-patterns

dotfiles-optimus/base/grep-patterns/…​

sed

dotfiles-optimus/base/sed-scripts/…​

~/.config/shell — STALE OPTIMUS REFERENCES

Symlink Stale Target

aliases.fish / aliases.sh

dotfiles-optimus/shell/aliases/…​

atelier.fish / atelier.shell

dotfiles-optimus/shell/atelier/…​

data-analysis.fish / .sh

dotfiles-optimus/shell/functions/…​

ollama.fish / .sh

dotfiles-optimus/shell/functions/…​

secure-vault.fish / .sh

dotfiles-optimus/shell/functions/…​

vault-wrappers.fish / .sh

dotfiles-optimus/shell/functions/…​

history-vault.fish / .sh

dotfiles-optimus/shell/functions/…​

bash.sh

dotfiles-optimus/shell/cli-mastery/…​

jq-yq.sh

dotfiles-optimus/shell/cli-mastery/…​

python.sh

dotfiles-optimus/shell/cli-mastery/…​

.links

dotfiles-optimus/shell/functions/…​

These are sourced at shell startup. Until re-homed, any functions defined here load from dotfiles-optimus. This is the most likely cause of ANTHROPIC_API_KEY not being set if it is exported from any of these files.

~/.gnupg — STALE OPTIMUS REFERENCES

Symlink Stale Target

gpg-agent.conf

dotfiles-optimus/base/gpg/…​

gpg.conf

dotfiles-optimus/base/gpg/…​

~/.config — OTHER STALE OPTIMUS REFERENCES

Symlink Stale Target

himalaya/config.toml

dotfiles-optimus/apps/himalaya/…​

libvirt/libvirt.conf

dotfiles-optimus/apps/libvirt/…​

Thunar/accels.scm / uca.xml

dotfiles-optimus/apps/thunar/…​

VSCodium/User/extensions.txt

dotfiles-optimus/editor/vscodium/…​

VSCodium/User/keybindings.json

dotfiles-optimus/editor/vscodium/…​

VSCodium/User/settings.json

dotfiles-optimus/editor/vscodium/…​

Legacy shortcut symlinks in the atelier tree pointing into dotfiles-optimus subdirectories. These appear to be convenience links, not active config paths.

bash  -> dotfiles-optimus/base/bash
bin   -> dotfiles-optimus/base/bin
fd    -> dotfiles-optimus/base/fd
fish  -> dotfiles-optimus/base/fish
fzf   -> dotfiles-optimus/base/fzf
git   -> dotfiles-optimus/base/git
gpg   -> dotfiles-optimus/base/gpg
ripgrep -> dotfiles-optimus/base/ripgrep
ssh   -> dotfiles-optimus/base/ssh
vim   -> dotfiles-optimus/base/vim
zsh   -> dotfiles-optimus/base/zsh

All entries under this directory are broken symlinks created by stow during the migration conflict resolution pass. They are not in any active PATH or config search path. Safe to delete once remediation of the live stale links above is confirmed complete.

Target: /home/evanusmodestus/atelier/_bibliotheca/Principia/.principia/scripts/publish.sh

Not a dotfiles-optimus reference. Broken because the Principia project has not been initialized on this machine. No action required until Principia is deployed.


Root Cause: Claude Code "Missing API key"

~/.claude/credentials.json does not exist — neither as a real file nor a symlink. Claude Code stores its OAuth token here. The file is absent because:

  • It was not carried over during the dotfiles-quantum stow deployment (correct — credentials should never be stow-managed).

  • No prior /login has been run on this machine/profile.

Secondary factor: ~/.config/shell/secure-vault.sh and vault-wrappers.sh are still symlinked to dotfiles-optimus. If ANTHROPIC_API_KEY is exported from either of these files, it would not be set correctly until those links are re-homed.


Remediation Plan

Priority Action Status

P0

Run /login inside Claude Code to create ~/.claude/credentials.json

⬜ Pending

P1

Identify which ~/.config/shell/ files export ANTHROPIC_API_KEY and re-home them to dots-quantum via stow

⬜ Pending

P1

Re-home ~/.local/bin/ scripts from dotfiles-optimus to dots-quantum

⬜ Pending

P1

Re-home ~/.local/share/{awk,bash,grep-patterns,sed} to dots-quantum

⬜ Pending

P2

Re-home ~/.gnupg/{gpg.conf,gpg-agent.conf} to dots-quantum

⬜ Pending

P2

Re-home ~/.config/{himalaya,libvirt,Thunar,VSCodium} entries to dots-quantum

⬜ Pending

P3

Update or remove ~/atelier/_projects/personal/ shortcut symlinks

⬜ Pending

P3

Remove ~/dotfiles-backup-20260325/conflicts/ after P1/P2 remediation confirmed

⬜ Pending

P4

Initialize Principia project on this machine to restore principia-publish

⬜ Pending


Remediation Procedure

Phase 1: Migrate Missing Files to dots-quantum

These files exist in dotfiles-optimus but NOT in dots-quantum. Copy them first.

1.1 GPG configs

cp ~/atelier/_projects/personal/dotfiles-optimus/base/gpg/.gnupg/gpg.conf \
   ~/atelier/_projects/personal/dots-quantum/gpg/.gnupg/

cp ~/atelier/_projects/personal/dotfiles-optimus/base/gpg/.gnupg/gpg-agent.conf \
   ~/atelier/_projects/personal/dots-quantum/gpg/.gnupg/

Verify:

ls -la ~/atelier/_projects/personal/dots-quantum/gpg/.gnupg/

1.2 Fish shell files

dots-quantum shell is missing fish equivalents. Copy them:

cd ~/atelier/_projects/personal/dotfiles-optimus

# Copy fish files that have no equivalent in dots-quantum
cp shell/atelier/.config/shell/atelier.fish \
   ~/atelier/_projects/personal/dots-quantum/shell/.config/shell/

cp shell/functions/.config/shell/data-analysis.fish \
   ~/atelier/_projects/personal/dots-quantum/shell/.config/shell/

cp shell/functions/.config/shell/history-vault.fish \
   ~/atelier/_projects/personal/dots-quantum/shell/.config/shell/

cp shell/functions/.config/shell/ollama.fish \
   ~/atelier/_projects/personal/dots-quantum/shell/.config/shell/

cp shell/functions/.config/shell/secure-vault.fish \
   ~/atelier/_projects/personal/dots-quantum/shell/.config/shell/

cp shell/functions/.config/shell/vault-wrappers.fish \
   ~/atelier/_projects/personal/dots-quantum/shell/.config/shell/

Verify:

ls ~/atelier/_projects/personal/dots-quantum/shell/.config/shell/*.fish

1.3 App configs (himalaya, libvirt, Thunar, VSCodium)

Create package directories and copy:

# himalaya
mkdir -p ~/atelier/_projects/personal/dots-quantum/himalaya/.config/himalaya
cp ~/atelier/_projects/personal/dotfiles-optimus/apps/himalaya/.config/himalaya/config.toml \
   ~/atelier/_projects/personal/dots-quantum/himalaya/.config/himalaya/
# libvirt
mkdir -p ~/atelier/_projects/personal/dots-quantum/libvirt/.config/libvirt
cp ~/atelier/_projects/personal/dotfiles-optimus/apps/libvirt/.config/libvirt/libvirt.conf \
   ~/atelier/_projects/personal/dots-quantum/libvirt/.config/libvirt/
# Thunar
mkdir -p ~/atelier/_projects/personal/dots-quantum/thunar/.config/Thunar
cp ~/atelier/_projects/personal/dotfiles-optimus/apps/thunar/.config/Thunar/accels.scm \
   ~/atelier/_projects/personal/dots-quantum/thunar/.config/Thunar/
cp ~/atelier/_projects/personal/dotfiles-optimus/apps/thunar/.config/Thunar/uca.xml \
   ~/atelier/_projects/personal/dots-quantum/thunar/.config/Thunar/
# VSCodium
mkdir -p ~/atelier/_projects/personal/dots-quantum/vscodium/.config/VSCodium/User
cp ~/atelier/_projects/personal/dotfiles-optimus/editor/vscodium/.config/VSCodium/User/extensions.txt \
   ~/atelier/_projects/personal/dots-quantum/vscodium/.config/VSCodium/User/
cp ~/atelier/_projects/personal/dotfiles-optimus/editor/vscodium/.config/VSCodium/User/keybindings.json \
   ~/atelier/_projects/personal/dots-quantum/vscodium/.config/VSCodium/User/
cp ~/atelier/_projects/personal/dotfiles-optimus/editor/vscodium/.config/VSCodium/User/settings.json \
   ~/atelier/_projects/personal/dots-quantum/vscodium/.config/VSCodium/User/

Verify all app configs migrated:

for pkg in himalaya libvirt thunar vscodium; do
  echo "=== $pkg ==="
  find ~/atelier/_projects/personal/dots-quantum/$pkg -type f
done

Remove the symlinks pointing to dotfiles-optimus so stow can recreate them.

# List what will be removed
find ~/.local/bin -type l 2>/dev/null | while read link; do
  target=$(readlink "$link")
  case "$target" in
    *dotfiles-optimus*) echo "STALE: $link" ;;
  esac
done
# Remove them
find ~/.local/bin -type l 2>/dev/null | while read link; do
  target=$(readlink "$link")
  case "$target" in
    *dotfiles-optimus*) rm -v "$link" ;;
  esac
done
# Remove awk, bash, grep-patterns, sed directory symlinks
for dir in awk bash grep-patterns sed; do
  if [ -L ~/.local/share/$dir ]; then
    rm -v ~/.local/share/$dir
  fi
done
# List and remove
find ~/.config/shell -type l 2>/dev/null | while read link; do
  target=$(readlink "$link")
  case "$target" in
    *dotfiles-optimus*) rm -v "$link" ;;
  esac
done
for f in gpg.conf gpg-agent.conf; do
  if [ -L ~/.gnupg/$f ]; then
    rm -v ~/.gnupg/$f
  fi
done
# himalaya
[ -L ~/.config/himalaya/config.toml ] && rm -v ~/.config/himalaya/config.toml

# libvirt
[ -L ~/.config/libvirt/libvirt.conf ] && rm -v ~/.config/libvirt/libvirt.conf

# Thunar
[ -L ~/.config/Thunar/accels.scm ] && rm -v ~/.config/Thunar/accels.scm
[ -L ~/.config/Thunar/uca.xml ] && rm -v ~/.config/Thunar/uca.xml

# VSCodium
for f in extensions.txt keybindings.json settings.json; do
  [ -L ~/.config/VSCodium/User/$f ] && rm -v ~/.config/VSCodium/User/$f
done

Phase 3: Restow dots-quantum Packages

Since dots-quantum is NOT a direct child of $HOME, you MUST specify -t ~ (target home) and --no-folding (prevent directory symlink conflicts).
cd ~/atelier/_projects/personal/dots-quantum
# Core packages
stow -v -t ~ --no-folding bin
stow -v -t ~ --no-folding share
stow -v -t ~ --no-folding shell
stow -v -t ~ --no-folding gpg
# App packages
stow -v -t ~ --no-folding himalaya
stow -v -t ~ --no-folding libvirt
stow -v -t ~ --no-folding thunar
stow -v -t ~ --no-folding vscodium
Without -t ~, stow defaults to parent directory as target, which would be ~/atelier/_projects/personal/ instead of ~. This causes silent failures.

Phase 4: Verification

4.1 Confirm no stale optimus references remain

find ~ -maxdepth 6 -type l 2>/dev/null | while read link; do
  target=$(readlink "$link")
  case "$target" in
    *dotfiles-optimus*) echo "STALE: $link -> $target" ;;
  esac
done

Expected output: Empty (no stale links).

# bin
ls -la ~/.local/bin/adoc | grep dots-quantum

# share
ls -la ~/.local/share/awk | grep dots-quantum

# shell
ls -la ~/.config/shell/aliases.sh | grep dots-quantum

# gpg
ls -la ~/.gnupg/gpg.conf | grep dots-quantum

4.3 Test shell startup

# Reload zsh
source ~/.zshrc

# Test a function from secure-vault.sh or vault-wrappers.sh
type vault-login 2>/dev/null || echo "vault-login not defined"

4.4 Commit dots-quantum changes

cd ~/atelier/_projects/personal/dots-quantum
git status --short
git add -A
git commit -m "feat: Migrate gpg, shell fish files, app configs from dotfiles-optimus

- gpg: gpg.conf, gpg-agent.conf
- shell: 6 fish files (atelier, data-analysis, history-vault, ollama, secure-vault, vault-wrappers)
- himalaya: config.toml
- libvirt: libvirt.conf
- thunar: accels.scm, uca.xml
- vscodium: extensions.txt, keybindings.json, settings.json

Completes migration from dotfiles-optimus"

Post-Remediation Cleanup

Remove backup directory (after verification)

Once all stale links are confirmed fixed:

rm -rf ~/dotfiles-backup-20260325

These are convenience links, not functional configs. Remove if desired:

cd ~/atelier/_projects/personal
for link in bash bin fd fish fzf git gpg ripgrep ssh vim zsh; do
  [ -L "$link" ] && rm -v "$link"
done

Update ~/.dotfiles pointer

rm ~/.dotfiles
ln -s ~/atelier/_projects/personal/dots-quantum ~/.dotfiles

Root Cause Analysis

RCA-2026-03-25-001: Stow Silent Failure Due to Incorrect Target

Date: 2026-03-25
Severity: Functional Failure (symlinks not created)
Duration: ~30 minutes to diagnose

Incident

After executing Phase 3 (restow), verification showed: - Only 16/35 bin scripts symlinked - 0/4 share directories symlinked - 0/17 shell files symlinked - 0/2 gpg files symlinked

Commands like vault-ssh-sign, adoc, and shell functions were unavailable.

Root Cause

stow without -t <target> uses the parent directory of the current working directory as the target. Since dots-quantum is located at:

~/atelier/_projects/personal/dots-quantum

The default target was ~/atelier/_projects/personal/ instead of ~ (home).

This caused stow to either: 1. Create symlinks in the wrong location 2. Silently do nothing (no error, no output)

Fix Applied

Added -t ~ and --no-folding flags to all stow commands:

stow -v -t ~ --no-folding bin

--no-folding prevents stow from replacing directories (like ~/.local/share) with symlinks, which would break other content in those directories.

Prevention

  1. Always specify target explicitly when stow directory is not a child of target:

    • stow -t ~ <package> for home-targeted packages

    • stow -t /etc <package> for system packages

  2. Use --no-folding when target directories have mixed ownership (stow + non-stow files)

  3. Add verification step immediately after stow:

    ls -la ~/.local/bin/adoc | grep dots-quantum || echo "FAILED"
  4. Document stow quirks in dots-quantum README

Date: 2026-03-25
Severity: Silent Failure
Impact: 13 symlinks created in wrong location

Incident

User discovered orphan symlinks in ~/atelier/_projects/personal/ instead of ~:

~/atelier/_projects/personal/bash → dotfiles-optimus/base/bash
~/atelier/_projects/personal/bin → dotfiles-optimus/base/bin
~/atelier/_projects/personal/fd → dotfiles-optimus/base/fd
... (11 total)
~/bin/.local → dotfiles-optimus/base/bin/.local
~/.dotfiles → dotfiles-optimus

Root Cause

Earlier stow commands executed WITHOUT -t ~ flag. Stow used parent directory (~/atelier/_projects/personal/) as target instead of home directory.

Fix Applied

Removed all 13 orphan symlinks:

cd ~/atelier/_projects/personal
for link in bash bin fd fish fzf git gpg ripgrep ssh vim zsh; do
  [ -L "$link" ] && rm -v "$link"
done
rm ~/bin/.local
rm ~/.dotfiles

Prevention

ALWAYS use: stow -v -t ~ --no-folding <package>

RCA-2026-03-25-003: SSH Config Not Migrated

Date: 2026-03-25
Severity: Config Gap
Impact: SSH config managed as local file instead of symlink

Incident

User identified that ~/.ssh/config (490 lines) was a regular file, not a symlink:

$ readlink ~/.ssh/config
# (no output - not a symlink)
$ wc -l ~/.ssh/config
490

dots-quantum ssh/ package was empty - no files.

Root Cause

SSH config existed in dotfiles-optimus/base/ssh/.ssh/config but was never copied to dots-quantum during initial migration. The dots-quantum ssh package directory existed but contained no files.

Fix Applied

mkdir -p ~/atelier/_projects/personal/dots-quantum/ssh/.ssh
cp ~/atelier/_projects/personal/dotfiles-optimus/base/ssh/.ssh/config \
   ~/atelier/_projects/personal/dots-quantum/ssh/.ssh/config
rm ~/.ssh/config
cd ~/atelier/_projects/personal/dots-quantum && stow -v -t ~ --no-folding ssh

Result:

$ readlink ~/.ssh/config
../atelier/_projects/personal/dots-quantum/ssh/.ssh/config

Prevention

Before archiving dotfiles-optimus, run comprehensive audit:

# Compare package contents
diff <(ls -1 dotfiles-optimus/base/) <(ls -1 dots-quantum/)

RCA-2026-03-25-004: Waybar Too Small (Monitor Scale)

Date: 2026-03-25
Severity: Visual Bug
Impact: Waybar text unreadable on HiDPI display

Incident

After dots-quantum deployment, waybar was "super small to read" despite identical CSS (font-size: 13px) to previous working config.

Root Cause

dots-quantum/hyprland/.config/hypr/monitors.conf had:

monitor = eDP-1, preferred, 0x0, 1  # WRONG - scale 1 on HiDPI

dotfiles-optimus/hosts/modestus-razer/monitors.conf had:

monitor = eDP-1, preferred, 0x0, 2  # CORRECT - scale 2 for HiDPI

The dots-quantum config was written with scale = 1 for a HiDPI panel that requires scale = 2.

Fix Applied

# Edit monitors.conf
sed -i 's/0x0, 1/0x0, 2/' ~/atelier/_projects/personal/dots-quantum/hyprland/.config/hypr/monitors.conf

Result: Text renders at correct size.

Architectural Gap Identified

dotfiles-optimus had per-machine configs:

hosts/
├── modestus-aw/
│   ├── env.conf
│   ├── hyprland.local.conf
│   └── monitors.conf
├── modestus-p50/
│   ├── env.conf
│   └── monitors.conf
├── modestus-razer/
│   ├── env.conf
│   ├── gpu
│   └── monitors.conf
└── modestus-x1/
    ├── env.conf
    └── monitors.conf

dots-quantum has single monitors.conf hardcoded for modestus-razer.

TODO: Add host-specific config pattern to dots-quantum for multi-machine deployment


Archive-Ready Status: dotfiles-optimus

Final Verification (2026-03-25)

Category Check Status

Symlinks

No active symlinks point to dotfiles-optimus

✅ PASS

SSH

~/.ssh/config → dots-quantum

✅ PASS

Shell

~/.zshrc, ~/.bashrc → dots-quantum

✅ PASS

Git

~/.gitconfig → dots-quantum

✅ PASS

CLI Mastery

~/.local/share/{awk,bash,grep-patterns,sed} → dots-quantum

✅ PASS

Scripts

~/.local/bin/* → dots-quantum (60+ scripts)

✅ PASS

Hyprland

~/.config/hypr/ → dots-quantum

✅ PASS

Waybar

~/.config/waybar/ → dots-quantum

✅ PASS

GPG

~/.gnupg/{gpg.conf,gpg-agent.conf} → dots-quantum

✅ PASS

Apps

himalaya, libvirt, thunar, vscodium → dots-quantum

✅ PASS

Missing from dots-quantum (Architectural Gaps)

Gap Impact

Host-specific configs (hosts/)

Multi-machine deployment requires manual editing of monitors.conf, env-gpu.conf

helix editor config

Not migrated (editor/helix in dotfiles-optimus)

alacritty terminal

Not migrated (terminal/alacritty in dotfiles-optimus)

dots-quantum Private Packages (By Design)

dots-quantum gitignores these directories for security:

ssh/     # SSH config - machine-local
gpg/     # GPG config - machine-local
hosts/   # Host-specific configs - machine-local
secrets/ # Sensitive data - machine-local

These exist locally but are NOT committed to GitHub.

To deploy on a new machine: 1. Clone dots-quantum 2. Copy private packages from dotfiles-optimus (or another source) 3. Stow them locally

Recommendation

dotfiles-optimus can be archived with the following caveats:

  1. Keep hosts/ directory contents for reference when deploying to other machines

  2. Keep base/ssh/ and base/gpg/ as private config source

  3. The missing editor/terminal configs (helix, alacritty) can be migrated on-demand

Archive Commands

cd ~/atelier/_projects/personal/dotfiles-optimus

# Create archive tag
git tag -a v1.0-archived -m "Final state before archiving - migrated to dots-quantum"
git push origin v1.0-archived

# Optional: Archive to tarball
tar -czf ~/atelier/_archive/dotfiles-optimus-2026-03-25.tar.gz .

GitHub Archive

# Archive the repository on GitHub (prevents accidental changes)
gh repo archive EvanusModestus/dotfiles-optimus --yes

Archive Completed (2026-03-25)

Archive locations established:

Location Purpose

~/atelier/_archive/2026/dotfiles-optimus/

Local archive - full git history preserved

GitHub (archived badge)

Remote archive - read-only, still searchable/cloneable

Commands executed:

# Tag final state
git tag -a v1.0-archived -m "Final state - migrated to dots-quantum 2026-03-25"
git push origin v1.0-archived

# Archive on GitHub
gh repo archive EvanusModestus/dotfiles-optimus --yes

# Move to local archive
mkdir -p ~/atelier/_archive/2026
mv ~/atelier/_projects/personal/dotfiles-optimus ~/atelier/_archive/2026/

Result:

  • Active projects directory: Only dots-quantum remains

  • dotfiles-optimus: Preserved locally + GitHub (archived)

  • Can restore if ever needed: gh repo unarchive EvanusModestus/dotfiles-optimus


Archive Directory Structure

A new archive directory has been established for deprecated projects:

~/atelier/_archive/
└── 2026/
    └── dotfiles-optimus/    # Archived 2026-03-25

Purpose: - Store deprecated repositories out of active projects path - Preserve git history for reference - Clean separation between active work and historical artifacts

Future archived projects should follow the pattern: ~/atelier/_archive/YYYY/<project-name>/