Repository navigation
chore: curate trap.d -- 2 awk gotchas promoted, 7 fragments declined - #479
Conversation
Promoted two awk-writing lessons (dynamic-regex backslash-doubling in bracket expressions, #432; `in` as a silently-compiling reserved-word parameter name, #442) into paths/00-manual/hooks.md's existing awk-trap section. Declined the remaining seven fragments, each with a citation per paths/00-manual/00-README.md's own decline-line rule: two already fixed by e0f8d39 (#437/#438) (#424 jit-misses.sh, half of #424 rebuild-tsv.sh), one still-live half of that same #424 fragment (layerdir/bytesof(), filed #475), three more still-live test/workflow defects filed as #476/#477/#478, one already fixed in PRIVACY.md by #468/#470 (#466), and one agent-facing lesson (#437, wrong-worktree edits) whose mitigation already exists as the supertool write op's own [branch: ...] receipt. Co-Authored-By: Claude Sonnet 5 <[email protected]>
|
Maintainer review (tick wait+review step, skills/manager/phases/review.md): Content: clean. Both promoted lessons (dynamic-regex bracket escaping, CI finding (below-bar, not this diff's fault): the one real failure -- Decision: content ready-to-merge; merge blocked only on a green re-run of the windows hooks shard-2/4 leg. |
Curate pass over
trap.d/(#1670/#1723 procedure). 9 fragments read together, each decided on its own merits.Promoted (2)
Both merged into
.claude/jit-context/paths/00-manual/hooks.md's existing "one awk trap, measured on both engines" section -- they are the same class of lesson (an awk-writing gotcha specific tocommon.sh/common-awk.sh), so a reader already in that section finds them beside their siblings rather than in a new file.~Bash rule matches words inside a heredoc body, so a payload that merely mentions a blocked command is refused #432 -- a dynamic regex string needs a doubled escape byte to put one literal backslash inside a bracket expression; a/literal/regex does not. Cost onecommon-awk.shextension 205/343 tests, confirmed by reverting.inis an awk reserved word and compiles silently as a parameter/array name on both engines, no syntax error, just garbage downstream. Cost 211/374 tests, fixed by a rename alone.No match pattern changed on either merge (body text only, into an already-firing file), so no new firing proof is needed and
rebuild-tsv.shwas not run.Declined, already fixed (2)
trap.d/424.jit-misses-generic-words-v-escape.mdand half oftrap.d/424.rebuild-tsv-v-escape.md(theGENERIC_WORDS_FILE/wfsite) -- both routed throughENVIRONine0f8d39(Ship a slim release branch to the Anthropic directory (port claude-remember's release-branch system) #437/Ship a slim release branch for the Anthropic plugin directory (#437) #438), which this pass found while checking the claim against HEAD rather than trusting the fragment's own age.trap.d/466.privacy-page-claims-vs-code.md-- all four claims are now stated correctly inPRIVACY.md, landed in docs: PRIVACY.md says what the hooks really write (#466) #468 and docs: PRIVACY.md, the four claims the second audit round caught (#466) #470.Declined, still true -- filed (4)
Each checked against HEAD (bda0282) before filing, per the decline-of-a-code-claim rule:
trap.d/424.rebuild-tsv-v-escape.md(thelayerdir/bytesof()site) -- rebuild-tsv.sh's bytesof() still reads layerdir through -v, not ENVIRON #475trap.d/461.release-check-crash-reads-as-pass.md-- A check_release_tree.py crash reads as a pass in test-release-branch-437.sh and -461.sh #476trap.d/461.release-equivalence-builds-head-not-source-ref.md-- Release-branch equivalence test builds HEAD, not $SOURCE_REF -- gap on workflow_dispatch with an older ref #477trap.d/459.awk-pipe-failure-masked-by-or-true.md-- detect_heredoc_lines() in test-no-heredocs-459.sh: an awk crash and a clean file render identically #478Declined, agent-facing lesson (1)
trap.d/437.wrong-worktree-edits.md-- forgetting a per-callcd <worktree> &&prefix. Not promoted: no ERE can distinguish "this call already has a same-callcdprefix" from "it does not" (no lookbehind in this awk dialect), so the only matchable rule would fire on everyedit/paste/batchcall in the whole repository, correctly-prefixed ones included. The supertool write op's own[branch: ...]receipt already names where a write landed, checkable after the fact on exactly the calls that need it.Disagree with any of this
Say so on the PR -- every decision above is a sentence, not a verdict, and this pass has no standing to insist on any of them.
trap.d/ends this pass empty (README.mdonly). Nothing deferred.[AI-generated]