/simplify cleanup: terminal-output path drift + counter→flag #3

Merged
claude merged 1 commit from simplify-cleanup into main 2026-05-08 16:06:54 +03:00
Collaborator

Summary

/simplify triplet result: reuse=PASS, efficiency=PASS, quality=WARNING. The 4 reuse findings + 9 efficiency findings were all NOT-WORTH-IT (repo too small for abstraction; no perf surface). The 3 quality findings are all in this PR.

Fixes

  1. Path drift in install.sh + uninstall.sh "Next steps" output — the scripts told users to open System Settings → Keyboard → Input Sources / scroll to Other / add Latvian Apostrofs. The Tahoe-verified path (per the README + the screenshot during PR #1 install verification) is System Settings → Keyboard → Text Input → Edit… / scroll to Others / add Latvian (apostrofs) (the picker label, lowercase, parens). The README was already right; the scripts were stale. Worst combination — users follow script output, not the README.
  2. ls -la decoration dropped from install.sh. The post-copy [[ -f ]] validation block already proves both files landed; printing 54481-byte / 459-byte / mode-bit lines was noise the user can't act on.
  3. removed counter → removed bool in uninstall.sh. The integer was only gating a single boolean ("did we touch anything?"). removed=true/false is the same shape with no arithmetic surface.

Out of scope (per /simplify dialogue)

  • Cross-script lib.sh for the shared DEST + filename pair → NOT-WORTH-IT (33+27 lines, two paired constants, indirection cost > duplication cost)
  • Workflow YAML defaults.run.shell → NOT-WORTH-IT (two repetitions; explicit-at-step-top is more legible)
  • TOCTOU pre-checks, subshell counts, shasum|awk, actions/checkout cache, mktemp -d cleanup → all NOT-WORTH-IT (this is a once-per-reinstall personal-Mac script, no perf surface)
  • .keylayout / .icns — SHA-pinned, byte-for-byte preserved, explicitly excluded

Test plan

  • Local smoke: HOME=/tmp/X bash install.sh && bash uninstall.sh && bash uninstall.sh (third invocation idempotent no-op) ✓
  • Local shellcheck via macmini's /usr/local/bin/shellcheck ✓ CLEAN
  • CI: shellcheck + SHA-pin + dry-run
  • Teika review (expecting NEEDS_CHANGES with findings=[] again per teika#60; operator-override APPROVED if so)

🤖 Generated with Claude Code
Co-Authored-By: Claude Opus 4.7 (1M context) noreply@anthropic.com

## Summary `/simplify` triplet result: **reuse=PASS, efficiency=PASS, quality=WARNING**. The 4 reuse findings + 9 efficiency findings were all NOT-WORTH-IT (repo too small for abstraction; no perf surface). The 3 quality findings are all in this PR. ## Fixes 1. **Path drift in `install.sh` + `uninstall.sh` "Next steps" output** — the scripts told users to open `System Settings → Keyboard → Input Sources` / scroll to `Other` / add `Latvian Apostrofs`. The Tahoe-verified path (per the README + the screenshot during PR #1 install verification) is `System Settings → Keyboard → Text Input → Edit…` / scroll to `Others` / add `Latvian (apostrofs)` (the picker label, lowercase, parens). The README was already right; the scripts were stale. Worst combination — users follow script output, not the README. 2. **`ls -la` decoration dropped** from `install.sh`. The post-copy `[[ -f ]]` validation block already proves both files landed; printing 54481-byte / 459-byte / mode-bit lines was noise the user can't act on. 3. **`removed` counter → `removed` bool** in `uninstall.sh`. The integer was only gating a single boolean ("did we touch anything?"). `removed=true/false` is the same shape with no arithmetic surface. ## Out of scope (per /simplify dialogue) - Cross-script `lib.sh` for the shared `DEST` + filename pair → NOT-WORTH-IT (33+27 lines, two paired constants, indirection cost > duplication cost) - Workflow YAML `defaults.run.shell` → NOT-WORTH-IT (two repetitions; explicit-at-step-top is more legible) - TOCTOU pre-checks, subshell counts, `shasum|awk`, `actions/checkout` cache, `mktemp -d` cleanup → all NOT-WORTH-IT (this is a once-per-reinstall personal-Mac script, no perf surface) - `.keylayout` / `.icns` — SHA-pinned, byte-for-byte preserved, explicitly excluded ## Test plan - [x] Local smoke: `HOME=/tmp/X bash install.sh && bash uninstall.sh && bash uninstall.sh` (third invocation idempotent no-op) ✓ - [x] Local shellcheck via macmini's `/usr/local/bin/shellcheck` ✓ CLEAN - [ ] CI: shellcheck + SHA-pin + dry-run - [ ] Teika review (expecting NEEDS_CHANGES with `findings=[]` again per `teika#60`; operator-override APPROVED if so) 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
/simplify cleanup: terminal-output path drift + counter→flag
All checks were successful
Test / validate (pull_request) Successful in 1s
451c17d7ed
Three findings from /simplify (reuse=PASS, efficiency=PASS, quality=WARNING):

1. **Path drift** — install.sh + uninstall.sh "Next steps" pointed users
   at the macOS pre-Tahoe Settings path (Input Sources / scroll to Other /
   "Latvian Apostrofs"). README + verified-on-Tahoe-26.4.1 evidence say
   the actual path is "Text Input → Edit…" / "Others" / "Latvian
   (apostrofs)" (the picker label, lowercase, parens). Worst combination
   was README right but script wrong, since users follow the script's
   terminal output. Now aligned.

2. **`ls -la` decoration** dropped from install.sh — the post-copy
   `[[ -f ]]` validation already proves both files landed; printing mode
   bits and byte sizes is noise the user can't act on.

3. **`removed` counter → `removed` bool** in uninstall.sh — the counter
   only gated a single boolean ("did we touch anything?"). `removed=true`
   is the same shape, one fewer arithmetic surface, and reads clearer.

No CI changes. No data-file changes (.keylayout / .icns SHA-pinned, out
of scope). Net diff: +8 / −10 across two scripts.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Collaborator

🤖 AI Review · Verdict: APPROVED (findings: [])

What was checked

  • install.sh change: stale Tahoe Settings path (Input Sources / Other / Latvian Apostrofs) replaced with verified path (Text Input → Edit… / Others / Latvian (apostrofs)); ls -la decoration removed; post-copy [[ -f ]] validation block intact.
  • uninstall.sh change: counter→bool refactor with same semantics; same path-drift fix.
  • set -euo pipefail, [[ -f ]] guards, cp -f / rm -f semantics: unchanged.
  • shellcheck: clean (verified locally on macmini's /usr/local/bin/shellcheck).
  • CI (runs 3116/3117): both ✓ success — shellcheck + SHA-256 byte-stability + install/uninstall dry-run.

Final

No bugs. No vulnerabilities. Safe to merge.

Reviewed by Teika · clean output (no phantom_files flag) on a 2-file 8/10-line diff — contrast with PR #2's 50-line README-only diff which tripped no_phantom_files. teika#60 still relevant for the verdict-derivation gap class.

## 🤖 AI Review · Verdict: **APPROVED ✅** (findings: []) ### What was checked - `install.sh` change: stale Tahoe Settings path (Input Sources / Other / Latvian Apostrofs) replaced with verified path (Text Input → Edit… / Others / Latvian (apostrofs)); `ls -la` decoration removed; post-copy `[[ -f ]]` validation block intact. - `uninstall.sh` change: counter→bool refactor with same semantics; same path-drift fix. - `set -euo pipefail`, `[[ -f ]]` guards, `cp -f` / `rm -f` semantics: unchanged. - shellcheck: clean (verified locally on macmini's `/usr/local/bin/shellcheck`). - CI (runs 3116/3117): both ✓ success — shellcheck + SHA-256 byte-stability + install/uninstall dry-run. ### Final No bugs. No vulnerabilities. Safe to merge. <sub>Reviewed by Teika · clean output (no phantom_files flag) on a 2-file 8/10-line diff — contrast with PR #2's 50-line README-only diff which tripped `no_phantom_files`. teika#60 still relevant for the verdict-derivation gap class.</sub>
claude merged commit e274baa0aa into main 2026-05-08 16:06:54 +03:00
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
2 participants
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
ojars/latvian-apostrofs!3
No description provided.