Skip to content

Clean up stale dotfiles and harden terminal workflow#99

Merged
michaelbarton merged 5 commits into
masterfrom
chore/dotfiles-hygiene-cleanup
Jul 20, 2026
Merged

Clean up stale dotfiles and harden terminal workflow#99
michaelbarton merged 5 commits into
masterfrom
chore/dotfiles-hygiene-cleanup

Conversation

@michaelbarton

@michaelbarton michaelbarton commented Jun 30, 2026

Copy link
Copy Markdown
Owner

Summary

  • Retire legacy and stale dotfile configs (email stack, hocon/grafana helpers, and old standalone files) and align Ansible linking with ~/.gitignore usage.
  • Update setup/maintenance docs and CI/make targets so formatting and validation commands are deterministic and match current workflow.
  • Harden fish/bash startup behavior and rework ToggleTerm into role-based terminals (run/test/scratch) with explicit lifecycle keymaps, then refresh the tmux cheatsheet.
  • Modernise the Python cookiecutter scaffold from Poetry to uv/PEP 621 (CodeArtifact index instead of jfrog, ruff format instead of black/isort) and bring ~/.config/uv/uv.toml under dotfiles management.
  • Add a dedicated ToggleTerm sql role (<leader>tq) that always launches duckdb, so vim-to-terminal SQL can no longer fall through to a fish shell and produce exit 127; add dq/dv fish helpers for the tmp/scratch.sql loop, plus managed ~/.duckdbrc/~/.visidatarc.
  • Harden the fish coreutils guard to check each g* binary individually instead of gating everything on gcat's presence.
  • Fix two Ghostty config options that started failing ghostty +validate-config after a Ghostty version bump: auto-install-terminfo was folded into shell-integration-features (ssh-terminfo flag), and notify-on-command-finish changed from a boolean to an enum (now unfocused).
  • Pin model/effortLevel defaults in the managed Claude Code settings.json, and ignore **/.claude/settings.local.json so personal local overrides don't get tracked.

Test plan

  • make fmt_check
  • uvx --from ansible-core ansible-playbook -i "localhost," -c local ansible/dotfiles.yml --syntax-check
  • make nvim-check
  • bash -n bash/bashrc
  • zsh -n zsh/zshrc
  • fish --no-execute fish/config.fish
  • ansible-playbook ansible/dotfiles.yml run twice (real machine) — new links (uv.toml, duckdbrc, visidatarc) created on run 1, idempotent (no changes) on run 2
  • Generated the cookiecutter template end-to-end: uv sync && just fmt && just test && just run all succeed, no Poetry involved
  • Verified ~/.duckdbrc/~/.visidatarc apply on launch and that duckdb -csv < file.sql (used by dv) stays clean on stdout
  • ghostty +validate-config returns clean (exit 0) after the config fix; ghostty +show-config confirms ssh-terminfo and notify-on-command-finish = unfocused applied

michaelbarton and others added 5 commits June 29, 2026 17:03
Retire legacy and stale configs, align setup/CI docs with Makefile-driven automation, and ensure global gitignore is linked by Ansible. Harden shell startup behavior and improve ToggleTerm ergonomics with role-based terminals, then refresh the tmux cheatsheet to match the updated workflow.
…fication

Tune the plan-quality rule to the work actually done (~80% one-off analysis
and reporting, not maintained software), based on a survey of 54 saved plans
and 216 session transcripts.

- Premortem now has two framings by work type: analysis/report work uses
  "this result was shared and the conclusion turned out to be wrong because…"
  with analysis-specific failure classes (fan-out, wrong denominator,
  population mismatch, stale data, misread columns); the "3 months later"
  framing is kept only for maintained pipelines/tools/config.
- Promote Context to a required first section (was in 87% of plans already).
- Add Verification as its own section, distinct from the done-checklist
  (was in 72% of plans already).
- Sync plan-review.sh gate list to match (9 gates).
- Add cursor/rules/CHANGELOG.md recording the reasoning and rejected
  alternatives (mode selector, relaxing the 60s rule, reviving Outside view).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
…e source)

The audit gate list was duplicated in planning.mdc's section structure and in
a hardcoded numbered list inside plan-review.sh; both had to be edited together
by hand, with nothing catching a mismatch. Make the rule the sole source:

- planning.mdc carries the canonical gate list as a <!-- gates ... --> HTML
  comment (invisible in Cursor's rendered view).
- plan-review.sh extracts that manifest at runtime instead of hardcoding it,
  strips the comment from the injected rule body, and fails loud (exit 1) if the
  manifest is missing. Drift is now structurally impossible.

Chosen over a CI drift-check, which would need to normalize the two
deliberately-different naming schemes and add test infra the repo lacks.

Also fixes CHANGELOG.md mdformat compliance (was failing `make fmt_check`) and
logs both this change and the fix in cursor/rules/CHANGELOG.md.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
…l-through

Command-history review found the cookiecutter template still generating
Poetry+black+isort+jfrog against a uv/ruff/duckdb workflow, and ~100+
exit-127s from vim scratch-SQL falling through to fish when duckdb wasn't
the live terminal process.

- python cookiecutter template: Poetry -> PEP 621 + uv, CodeArtifact index
  instead of jfrog, ruff format/check instead of black/isort, fix hardcoded
  package name, fix setuptools package discovery, add a passing placeholder
  test so the scaffold's own fmt/test/run chain succeeds out of the box.
- Bring the existing ~/.config/uv/uv.toml under dotfiles management.
- nvim: dedicated `sql` toggleterm role (`<leader>tq`) that always launches
  duckdb, so send-to-terminal SQL can no longer fall through to a shell.
- fish: dq/dv helpers for the tmp/scratch.sql duckdb loop; harden the
  coreutils guard to check each g* binary individually.
- Add ~/.duckdbrc and ~/.visidatarc (deliberately omit `.timer on` from
  duckdbrc: it writes to stdout and corrupts the dv->visidata CSV pipe).
…re local claude settings

Ghostty 1.3 renamed auto-install-terminfo into shell-integration-features
(ssh-terminfo flag) and changed notify-on-command-finish from a boolean
to an enum, so the old config values were failing ghostty +validate-config
on startup.
@michaelbarton michaelbarton changed the title chore: clean up stale dotfiles and harden terminal workflow Clean up stale dotfiles and harden terminal workflow Jul 20, 2026
@michaelbarton
michaelbarton merged commit dde9318 into master Jul 20, 2026
3 checks passed
@michaelbarton
michaelbarton deleted the chore/dotfiles-hygiene-cleanup branch July 20, 2026 17:22
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant