document shape: diagnostics, headingless tables, plus-sigil rows and env-var columns - #151
Merged
Merged
Conversation
…ysis fuser, Xvfb and nfsidmap print one diagnostic line then their real document; it no longer fuses into the root description or a usage label. New corpus fixtures: fuser, Xvfb (partial, still xfail). Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
…offsets
[S-166] A header row naming Argument/Env-variable/Description columns is
read at those offsets instead of one column gap, so the env-variable cell
becomes the flag's own env_var cross-reference (spec §4.5) instead of
gluing onto the description. -cpu and -dfilter keep their own value name
now, and the prose paragraph below the table ("The following lines are
equivalent:") no longer fabricates a second -E row and group, fixing all
42 qemu-*-static tools (mandible qemu-riscv64-static).
The TUI now renders a flag's own env_var as an "env: FOO" line next to
values:, since it carried no rendering before this shape existed
(docs/design.md §9.3 rule 8).
corpus/qemu-arm64-static/audit-seed2/expected.snap moved for the same
reason: it already exhibited this shape and was already green, so
re-blessing it after the fix is the ordinary case, not a promotion.
Every flag on it keeps its own spelling, value_name and description;
each row's env_var is new. New fixture corpus/qemu-riscv64-static/8.2.2.
New detector header-declared-env-column (xtask/src/coverage/round10.rs),
family() None: the seed-7 audit labels qemu-riscv64-static "incomplete"
and describes this exact shape, but no DEFECT_FAMILIES entry names it and
the entry carries no derived family label.
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
The `+` sigil gate reads a whole letter-led run as the spelling, so a `+bs` or `+i` row becomes an option instead of ending its block. docs/shapes.md S-095, S-163. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
A headingless table no longer duplicates into the root description (S-165), which let `+word` and `+/-name`/`[+-]name` alternation rows reach a column-0 table (S-163). A root flag group equal to the node's own description is refused as a second copy of it (S-164). Xvfb: 69 to 78 flags, fzf: 63 to 65. fc-scan, fc-validate, grub-macbless and lto-dump stop showing their description sentence twice. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Changelog, atlas, detector registry and the round-10 footer keep both sides. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
…ension value column, and its choice list +/-render's expansion no longer collides with the ordinary -render row; +word and -word now read the same value column and share one colon- introduced choice list (new S-168) instead of folding it into a description. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
…count S-168 ships as a gated exception (1 tool at tree level, 26 raw-shape upper bound), not because it cleared the bar. S-145's placeholder-gap widening moves 6 tools on its own sweep evidence, named with the one partial recovery (llvm-lipo-18) and the -render duplicate's own fencing gap recorded. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Keep-both in CHANGELOG, docs/shapes.md (numeric order), the detector registry and xtask/src/coverage/round10.rs. S-155's choices rule moves inside S-163's new push_flag_entity, S-162's prefix strip inside S-150's seed_usage_scan. The two Xvfb fixtures become one: audit-seed10's contract folds into audit-seed. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
… tests Merging S-163's alternation rows beside S-155's argparse gate took emit_flags_block to eight arguments; RowRouting carries the three row facts. usage.rs reached 804 code lines, so its label and program-name predicates move to usage_label.rs. Xvfb gains 24 value names, fc-scan drops a group label that repeated its own description. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
The merged usage.rs reached 804 code lines, over the 800 ceiling. A usage label and the tool's own name at a synopsis head are the same question the heading predicates already answer, so they move to heading.rs rather than into a new file no ratio baseline covers. 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.
A document's own shape is read before its rows are: a leading option-rejection diagnostic, a headingless table duplicated into the root description, a group label that only repeats the node's description, a
+wordor+/-nameoption row and a header-declared three-column table each reach the tree correctly now. These were five seed-7 items whose common cause was the document boundary rather than any option row, plus the three Xvfb defects and the+column placement the maintainer's round 10 visual check reported.Round 11 additions: a
+/-nameexpansion no longer collides with an ordinary row documenting the same spelling, so-renderkeeps one row with its four choices and+renderkeeps its own;+extensionand-extensionread the samenamevalue column; the colon-introduced list of run-time-toggleable extensions becomes that placeholder's 19 choices on both halves; and a+spelling longer than one character renders in the long column beside-renderinstead of the short column at column 0, leaving fzf's one-character+iand+swhere they belong.Fleet sweep against the 0b30c15 baseline, 2269 tools matched, 0 appeared, 0 disappeared: 10 flags gained across 2 tools (Xvfb 69 to 77, fzf 63 to 65), 0 subcommand losses, 0 subcommand gains, 49 tools field-level. 84 flags are counted as lost across 42 tools, every one a
qemu-*-staticgoing 26 to 24: those two entities per tool are fabricated duplicates with no description and no unique spelling, verified five ways, so no spelling, description or value name is lost anywhere. Xvfb reads 77 rather than 78 because the one entity removed is the duplicate-renderthe collision fabricated. The S-145 widening this branch needed also recovers a value name on five further tools, each checked against that tool's own text: jdb-dbgtrace [flags], jrunscript-encoding <encoding>, llvm-libtool-darwin-18-arch_only <arch_type>, llvm-lipo-18-arch <value>, screen-wipe [match]. All nine named controls are byte-identical on the first capture, docker and git included.