Repository navigation
fix(audit): read typer's and rich-click's required options - #183
Open
brettdavies wants to merge 2 commits into
Open
brettdavies wants to merge 2 commits into
brettdavies wants to merge 2 commits into
Conversation
This was referenced Oct 9, 2026
brettdavies
added this pull request to stack #166
October 9, 2026 15:40
typer and rich-click mark a required option with `*` in the first cell of its row. Neither probe declared one, so no fixture held that row. Both probes gain a required `-t, --target`. The snapshots record what the parser reads from the new captures today: every row but that one. The probe image is rebuilt for the new sources, and its Dockerfile now installs the Thor gem from a file fetched by checksum, as it already does for the picocli jar. Thor was the one dependency of the image installed without an integrity check. The other 15 probe captures come out of the rebuilt image byte for byte.
typer and rich-click mark a required option with `*` in the first cell of its box-table row:
│ * --target -t <str> where to deploy [required] │
A row has to lead with a flag name to be a definition, so that row declared nothing while the rows around it were read. A tool's required flags were the ones `anc` could not see.
The text cleanup that turns box edges into gaps now blanks a `*` that leads a box-table row and stands in a cell of its own. The row then leads with its name. A `*` outside a box table, or one that is part of a word (`*.md`), is left alone.
brettdavies
force-pushed
the
fix/help-flags-typer-required-rows
branch
from
October 9, 2026 17:22
bb82405 to
bfebab6
Compare
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.
Summary
From the code review of the stack. typer and rich-click mark a required option with
*in the first cell of its box-table row:A row has to lead with a flag name to be a definition, so the
--targetrow declared nothing while the rows around it were read. A tool's required flags were the onesanccould not see. Neither probe declared a required option, so no fixture held such a row and the gap did not show.Two commits:
-t, --target, and the snapshots record what the parser read from the new captures before the fix: every row but that one.*that leads a box-table row and stands in a cell of its own. The row then leads with its name. A*outside a box table, or one that is part of a word (*.md), is left alone.The probe image was rebuilt for the new probe sources. Its Dockerfile now installs the Thor gem from a file fetched by checksum, as it already does for the picocli jar: Thor was the one dependency of the image installed without an integrity check. The other 15 probe captures come out of the rebuilt image byte for byte, and
index.jsonrecords the new image ID.Changelog
Fixed
*in its first cell.Documentation
--helpnotes that typer's*marker is not part of a name.Type of Change
fix: Bug fix (non-breaking change which fixes an issue)Related Issues/Stories
docs/plans/2026-10-06-0034-fix-help-flag-names-across-frameworks-plan.md(requirement R4, box-table rows; review follow-up)Testing
Test Summary:
classify.rs, the typer and rich-click fixtures are asserted to declare--target, -t, andnormalize.rstests the marker in a box row, a*bullet outside a box, and*.mdinside one.cargo test --test dogfoodpasses.--targetrow. In the second they gain--target, -t | where to deploy [required].capture.sh probesagainst the rebuilt image. Of 17 captures, the typer and rich-click ones differ from the committed fixtures and 15 are identical.Negatives observed failing. The new tests against the captures commit, before the fix:
Expected moves. Written before the corpus run.
None. No help text in the full registry capture set (910 files) has a box-table row that leads with a
*cell, and rendering the set through the base and head parsers gives identical definitions. Replaying it through the base and head builds moves no row.Corpus before/after. Run after the table above was written. Base
7e3ca56dfddd, headbfebab609d17. Imagesha256:05db16cf226cd14a93a2682aea41b72d3e6b4d240cadba006f2881d3ffa996b3, networkbridge. 98 tools selected, 95 scored under both builds, 1 rerun three times (mods).Moved rows (0)
None.
Derived fields moved (0)
None.
No row and no derived field moved, as expected.
modsp3-should-about-long-about, the one row on the A/A noise list, is reported as not moved: both builds returned the same result for it in at least one run. No row is unstable, no harness bug is flagged, and no tool failed to score under one build only.cursor,nvidia-smiandxai-grok-buildare absent from the image and ran under neither build.Files Modified
Modified:
src/runner/help_probe/flags/normalize.rs: the marker rule.src/runner/help_probe/flags/classify.rs: tests.tests/fixtures/help/probes/python/py_typer.py,py_richclick.py: a required option.tests/fixtures/help/probes/Dockerfile: the Thor gem by checksum.tests/fixtures/help/probe-typer__--help.txt,probe-rich-click__--help.txt,index.jsonsrc/runner/help_probe/snapshots/probe-typer__--help.snap,probe-rich-click__--help.snapREADME.mdCreated:
Renamed:
Deleted:
Breaking Changes
Deployment Notes
Checklist