extract: join a usage line's bracket group only when it is flat - #157
Merged
Merged
Conversation
S-154 tested no flatness, so a nested group fused too: `uniq`'s `[INPUT [OUTPUT]]` became one positional called `INPUT OUTPUT`. docs/shapes.md S-154. corpus/uniq/9.4, corpus/env/9.4. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
S-154's multi-word join tested no flatness, so it also fused a nested bracket group, and
uniq [OPTION]... [INPUT [OUTPUT]]reached the tree as one positional calledINPUT OUTPUT; the join now requires one bracket pair. The sweep that admitted the rule could not see it, because sweep-diff gates on flag and subcommand counts and a positional rename moves neither.Positionals on a full-
PATHsweep of 2324 tools. Every tool that carries a space-bearing positional on main is listed; nothing else in the sweep moves.[MAN DATABASE][INPUT FILE] [OUTPUT FILE][MAJOR MINOR][CONFIGURATION FILE...][CONFIGURATION FILE...][COMMAND [ARG]...][COMMAND [ARG]...][[TEXTDOMAIN] MSGID][INFILE [OUTFILE]][HOST [PORT]][PASSWORD [SALT]][COMMAND [ARG]...][DEVICE [COMMAND [PARAMETERS]...]...][ORIGFILE [PATCHFILE]][ERRORCODE [ERRORCODE...]][INPUT [OUTPUT]][FILE [PREFIX]][FILENAME [SQL]][HOST [PORT]][INPUT [OUTPUT]]The first five groups are flat and stay joined. The other fifteen are nested and read exactly as they did before the rule shipped: for fourteen of them the whole
#fp2record is byte-identical to its pre-merge record, and sqlite3's remaining difference is nine value names S-157 gave it.Sweep-diff against the merged sweep: 0 flag losses, 0 flag gains, 0 subcommand movement, 0 status transitions, 0 tools appeared or disappeared, field-level changes on exactly those 15 tools. All nine named controls byte-identical. The existence oracle reads 81 tools against 95.
nested-bracket-group-fused-operandreads 15 tools/15 findings on the fused parser and 0/0 on this branch, ratcheted at zero.