From 5387c5d19d13133622e0d2de62c733508de9795d Mon Sep 17 00:00:00 2001 From: Krzysztof kuhy Rudnicki Date: Sun, 16 Aug 2026 20:18:26 +0200 Subject: [PATCH] Record the heredoc trap; update the handoff to 87 left The deferred list is now a table of seven shell scripts plus the two TypeScript ones, each with the specific variable or construct that blocks it. All share one cause: state, or a heredoc, crossing the seam. Co-Authored-By: Claude Opus 5 (1M context) Claude-Session: https://claude.ai/code/session_011w2Pj4Ek3ZNMQVYcFHgXDY --- docs/shell-split-recipes.md | 13 ++++++++++ refactor_claude_todo_resume.md | 43 +++++++++++++++++----------------- 2 files changed, 35 insertions(+), 21 deletions(-) diff --git a/docs/shell-split-recipes.md b/docs/shell-split-recipes.md index 6909909f..a7fac825 100644 --- a/docs/shell-split-recipes.md +++ b/docs/shell-split-recipes.md @@ -151,6 +151,19 @@ emitting three files. records why `settings.yml` is mode 640 and not 600 (at 600 the granian worker dies with EACCES) — that comment is worth more than the code around it. +### A seam inside a heredoc produces a file that will not parse + +The worst failure in this effort: the split of `enforce_vbox_hosts.sh` cut +between `cat <` before believing a split. +Same in `kcd2_dice_solver`: `search.ts` and `badgeValue.ts` are mutually +recursive across any seam. -Next: the remaining `main()`-shaped shell scripts, then -`kcd2_dice_solver` / `focus_owner` / `billsplit` (TS+Dart+Kotlin, untouched so -far), then the four prose files — zero execution risk. +**The pre-commit `shellcheck` hook lints each lib alone**, with no view of the +caller's globals — stricter than `shellcheck -x` on the entry, and the check +that decides whether a seam is real. Run it before believing a split. + +Next: the remaining `main()`-shaped shell scripts, then `focus_owner` / +`billsplit` / `reverse_survivors` (Kotlin+Dart+TS, untouched so far). ## The live worklist