Skip to content

curate: 7 trap.d fragments -- 2 promote, 4 merge, 4 decline - #420

Merged
fdaviddpt merged 1 commit into
mainfrom
curate/20260918T062116Z
Sep 18, 2026
Merged

fdaviddpt merged 1 commit into
mainfrom
curate/20260918T062116Z

Conversation

@fdaviddpt

Copy link
Copy Markdown
Contributor

What this is

A normal /oss:run curate pass over the 7 fragments that were waiting in trap.d/ --
each is decided (promote / merge / decline), never asked about. The trap.d issue
numbers below are provenance -- which issue was being worked when the trap was
logged -- not the subject of this PR, so nothing here closes anything.

Decisions

Promote -- .claude/jit-context/tools/00-manual/git-stash-worktree.md (Part of #388).
.git is shared across every git worktree add tree of the same clone, so is the
stash list: git stash push reporting "No local changes to save" says nothing about
what is already on the stack, and the following git stash pop pops whatever
stash@{0} is repo-wide -- which can be an unrelated stash from a sibling worktree.
New tool: Bash rule, match: ~@invocation git stash pop, mode: remind.
Firing proof: fires on git stash pop, silent on git stash list, known-good
control (merge-gate.md on a gh-pr-merge payload) fired alongside it in the same
batch.

Promote -- .claude/jit-context/tools/00-manual/supertool-toml-trailing-delimiter.md
(Part of #397). A TOML old/new/content field whose own last character is a
literal quote, glued to the closing """ on the same line, gets that trailing quote
silently eaten as part of the delimiter -- old still matches as a truncated prefix,
so the edit "succeeds" and only fails later somewhere unrelated (bash-check), with
no hint the dropped byte was self-inflicted. New tool: Bash rule,
match: ~@invocation-quoted-arg supertool, mode: once. Firing proof: fires on
supertool 'edit:@-', silent on an unrelated ls -la; this rule fired live, for
real, on the supertool git-commit:@- call that committed this very batch.

Merge -- into paths/00-manual/hooks.md (Part of #364). The single awk-program
argument every hook builds (pre-tool-hook.sh, pre-prompt-hook.sh,
pre-path-hook.sh, post-tool-hook.sh) has no structural margin against Linux's
MAX_ARG_STRLEN (131072 bytes) -- macOS enforces no equivalent per-argument cap, so
this fails loudly on Linux CI and silently nowhere on a contributor's Mac. Documents
the mechanism, the 129890 -> 132965 byte measurement from #364/#365, and
tests/test-awk-arg-max-369.sh as the local, no-exec check that catches it before a
Linux CI round trip. Body-only edit; no index change, no firing proof needed (match
pattern unchanged).

Merge -- into paths/00-manual/tests.md (Part of #380, #403). Two related
test-authoring gaps, same defect class this file already opens on ("a green suite
that tested nothing"): (a) test-hook-tmpfile.sh section C's skip branch does not
set SKIPPED_SECTIONS, so it can go to zero assertions and still read as a pass, on
the one section that is the sole exerciser of the awk -f <(printf ...) fallback
path; (b) assert_single_valid_json() -- the discriminating check three suites use
-- silently no-ops on a host with no python3, converting a never-run assertion into
a clean pass. Body-only edit; no index change, no firing proof needed.

Decline -- new paths/00-manual/00-README.md, four lines:

No defer in this batch -- every fragment reached a decision.

Verification run for this batch

  • bash scripts/rebuild-tsv.sh -- 21 entries indexed, 0 refused, no stale frontmatter.
  • bash scripts/jit-dry-run.sh --base .claude/jit-context --tool Bash --command "git stash pop" -- 18 rules indexed, 18 patterns compiled, 0 refused.
  • bash tests/test-dogfood-entries.sh -- 97/97 passed.
  • bash tests/test-line-citations.sh -- 6/6 passed.
  • Drove pre-tool-hook.sh directly for both new rules: must-fire / must-stay-silent pairs, plus a known-good control rule firing alongside them in the same session.

[AI-generated]

Promote two new tools/00-manual rules: git stash pop is repo-global across
worktrees (#388), and supertool TOML content ending in a trailing quote
glued to the closing delimiter silently drops a byte (#397). Merge the awk
argv byte-cap mechanism into hooks.md (#364), and two test-authoring gaps
(a skip branch that never sets its own SKIPPED_SECTIONS, and an
assert_single_valid_json() that no-ops without python3) into tests.md (#380,
#403). Decline four thinner findings into a new paths/00-manual/00-README.md,
naming why each was not carried forward.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
@fdaviddpt fdaviddpt added the no-changelog Change is invisible to users label Sep 18, 2026
@fdaviddpt
fdaviddpt merged commit 9927385 into main Sep 18, 2026
13 of 14 checks passed
@fdaviddpt
fdaviddpt deleted the curate/20260918T062116Z branch September 18, 2026 06:46
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

no-changelog Change is invisible to users

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant