Skip to content

train b63 integration gate (do not merge) - #506

Closed
roodboi wants to merge 7 commits into
nextfrom
train/b63
Closed

roodboi wants to merge 7 commits into
nextfrom
train/b63

Conversation

@roodboi

@roodboi roodboi commented Oct 24, 2026 •

Copy link
Copy Markdown
Contributor

Integration gate for merge batch b63: origin/next + #490 (HACK-1438, HACK-1461). Tree f9b7ca85. Closed after the batch squashes.

🤖 Generated with Claude Code


View with [code]smith Autofix with [code]smith
Need help on this PR? Tag @codesmith-bot with what you need.

roodboi and others added 7 commits October 24, 2026 14:02
…elain command runners (HACK-1438)

The task-catalog inline-command denylist accepted `git send-email
--to-cmd/--cc-cmd/--header-cmd/--sendmail-cmd` and `--smtp-server=/path`,
each of which runs a command. send-email reads options with Perl's
Getopt::Long defaults, so the one-dash and `+` prefixes, any letter case
and unique prefixes are refused too, scoped to the send-email subcommand
(dashed, absolute or mixed-case). Exact `--to`, `--cc` and `-h` still pass.

A sweep of Git's porcelain adds the remaining command runners, each scoped
to its subcommand: `grep -O`/`--open-files-in-pager`, `daemon
--access-hook`, `instaweb -d`/`--httpd`, `svn --authors-prog`, plus the
`remote-ext` helper, `ext::` URLs and `archimport` (which pastes its
operands into a shell pipeline). Subcommand-scoped tables are now matched
case-insensitively because a case-insensitive filesystem runs
`git-send-email` for `git Send-Email`.

Refs HACK-1438

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…gs after the subcommand (HACK-1438)

Merge origin/next (d09e1b7) into the HACK-1438 branch. #475 (HACK-1423)
made subcommand-scoped Git flags count only after the operand that names
the subcommand. Apply the same rule to the Getopt::Long send-email table
and the HACK-1438 subcommandInline entries, keeping the lowercased
subcommand lookup: one scopedEntries helper now serves both tables by
operand index. `git log -o -- Grep` and `git rev-list --header send-email`
now pass; `git log -- Grep -o` and every send-email spelling after the
subcommand stay refused. Update the collateral test and docs to the one
rule, and add tests that kill the `--`/`-` empty-name, `=ext::` and
mid-argument `ext::` mutations.

Refs HACK-1438

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…-options

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Refs HACK-1438

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
… a denylisted program (HACK-1461)

A case-insensitive filesystem (APFS, NTFS) looks names up with Unicode
case folding, so `git ſend-email --to-cmd=cmd` and `git filter-branch`
ran the denylisted Git programs while the catalog's `toLowerCase()`
comparison accepted them. Program, subcommand and module names are now
compared after NFKC, removal of default-ignorable code points and
upper-then-lower case folding, and a listed program or a Git subcommand
spelled with any non-ASCII character is refused whatever follows.

Docs describe the folding and the `help.autocorrect` limit next to the
alias limit; the HACK-1438 collateral test comment no longer claims a
subcommand counts at any operand.

Refs HACK-1461
Refs HACK-1438

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…task runs (HACK-1461)

The G109 verifier showed U+1E9E (capital sharp s) still slipped through:
APFS folds it to ss, so a program named ẞh runs ssh, but upper-then-lower
case folding turned it into ß. Fold lower, upper, then lower so ẞ becomes
ss, and refuse any program run as argv[0] whose file name has a non-ASCII
character, listed or not, so a folding this check does not predict cannot
reach a listed program. Later arguments keep the folded list check.
Tests for ẞh (bare, absolute, as an operand) and unlisted non-ASCII
programs; both changes proven by mutation.

Refs HACK-1461

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@roodboi roodboi closed this Oct 24, 2026
@roodboi
roodboi deleted the train/b63 branch October 24, 2026 23:31
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