System Configuration
When making system configuration changes:
- •
Should this go in dotfiles? Persist across machines → dotfiles, not direct system changes
- •
Choose the right lane
Case Location Notes Pure config directory (whole-dir symlink) home/<path>/Add to trueDirsindotctl.config.jsonMixed directory (config + runtime state) home/<path>/with.spreadmarkerAdd .spreadfile; dotctl creates per-file symlinksSingle config file home/<path>File symlink created automatically by just upFile needing merge with runtime state home/<path>+home/<path>.modifySidecar script merges managed + live content Encrypted secret home/<path>.ageDecrypted via age on deploy Data file that only drives lifecycle scripts home/Brewfile,home/npm/global-packages.txt,home/dock/apps.txtIgnored from deploy, hashed by scripts - •
Resolve the target path before editing
- •
just explain <target>to see lane, source path, and capture policy - •
just edit <target>to open the correct backing file
- •
- •
Converge with the public command
- •Use
just upafter adding new files, changing lifecycle inputs, or touchingspecial-lane targets - •Do not invent new sync wrappers;
just upis the convergent interface
- •Use
- •
Promote to
trueDironly when all of these hold- •the target is a directory
- •the subtree is plain target-shaped (no metadata prefixes)
- •git is the intended source of truth
- •unmanaged runtime spill is acceptable or excluded