Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,7 @@ once it reaches a published 0.1.0 release.
- [S-167] A `Usage:` line whose leading word carries a bracketed optional-abbreviation suffix (`v[ersion]`, `g[dbserver]`) now reaches the tree as its own subcommand, named and shown by its full word with the short prefix kept as an alias, and probed for its own flags, instead of folding into the usage block (`mandible lldb-server`).
- [S-169] A command table sitting directly under the root's own usage synopsis, rows never repeating the tool's own name, now recovers as subcommands carrying their own flags and operands instead of fabricated flag groups on the root, so `mandible dmsetup` and `mandible dmstats` show their full command lists.
- [S-170] A usage-synopsis bracket group whose own value spec is itself entirely option spellings no longer invents a value from it, so `mandible dmsetup`'s `-h, --help` and `-v, --verbose` show no value name instead of `-c|-C|--columns`/`-v|--verbose ...`.
- [S-172] A single-dash-long token standing alone in a usage line's own bracket keeps its whole spelling now instead of splitting into a short flag plus a fabricated value, so `mandible lshw` shows `-format` and `-options` and `mandible fuser` shows `-SIGNAL` with its real description.

## [0.7.0] - 2026-09-05

Expand Down
142 changes: 142 additions & 0 deletions corpus/fuser/23.7/expected.snap
Original file line number Diff line number Diff line change
@@ -0,0 +1,142 @@
name: fuser
description: Show which processes use the named files, sockets, or filesystems.
usage:
- 'Usage: fuser [-fIMuvw] [-a|-s] [-4|-6] [-c|-m|-n SPACE] [-k [-i] [-SIGNAL]] NAME...'
- ' fuser -l'
- ' fuser -V'
positionals:
- name: NAME
required: true
variadic: true
provenance:
sources:
- help-text
flags:
- spellings:
- -a
- --all
description: display unused files too
provenance:
sources:
- help-text
- spellings:
- -i
- --interactive
description: ask before killing (ignored without -k)
provenance:
sources:
- help-text
- spellings:
- -I
- --inode
description: use always inodes to compare files
provenance:
sources:
- help-text
- spellings:
- -k
- --kill
description: kill processes accessing the named file
provenance:
sources:
- help-text
- spellings:
- -l
- --list-signals
description: list available signal names
provenance:
sources:
- help-text
- spellings:
- -m
- --mount
description: show all processes using the named filesystems or block device
provenance:
sources:
- help-text
- spellings:
- -M
- --ismountpoint
description: fulfill request only if NAME is a mount point
provenance:
sources:
- help-text
- spellings:
- -n
- --namespace
value_name: SPACE
value_kind: Required
description: search in this name space (file, udp, or tcp)
provenance:
sources:
- help-text
- spellings:
- -s
- --silent
description: silent operation
provenance:
sources:
- help-text
- spellings:
- -SIGNAL
description: send this signal instead of SIGKILL
provenance:
sources:
- help-text
- spellings:
- -u
- --user
description: display user IDs
provenance:
sources:
- help-text
- spellings:
- -v
- --verbose
description: verbose output
provenance:
sources:
- help-text
- spellings:
- -w
- --writeonly
description: kill only processes with write access
provenance:
sources:
- help-text
- spellings:
- -V
- --version
description: display version information
provenance:
sources:
- help-text
- spellings:
- '-4'
- --ipv4
description: search IPv4 sockets only
provenance:
sources:
- help-text
- spellings:
- '-6'
- --ipv6
description: search IPv6 sockets only
provenance:
sources:
- help-text
- spellings:
- -f
provenance:
sources:
- help-text-synopsis
- spellings:
- -c
provenance:
sources:
- help-text-synopsis
provenance:
sources:
- help-text
confidence: 0.5
children_filled: true
26 changes: 26 additions & 0 deletions corpus/fuser/23.7/help.stderr.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
/usr/bin/fuser: Invalid option --help
Usage: fuser [-fIMuvw] [-a|-s] [-4|-6] [-c|-m|-n SPACE]
[-k [-i] [-SIGNAL]] NAME...
fuser -l
fuser -V
Show which processes use the named files, sockets, or filesystems.

-a,--all display unused files too
-i,--interactive ask before killing (ignored without -k)
-I,--inode use always inodes to compare files
-k,--kill kill processes accessing the named file
-l,--list-signals list available signal names
-m,--mount show all processes using the named filesystems or
block device
-M,--ismountpoint fulfill request only if NAME is a mount point
-n,--namespace SPACE search in this name space (file, udp, or tcp)
-s,--silent silent operation
-SIGNAL send this signal instead of SIGKILL
-u,--user display user IDs
-v,--verbose verbose output
-w,--writeonly kill only processes with write access
-V,--version display version information
-4,--ipv4 search IPv4 sockets only
-6,--ipv6 search IPv6 sockets only
udp/tcp names: [local_port][,[rmt_host][,[rmt_port]]]

Empty file added corpus/fuser/23.7/help.txt
Empty file.
26 changes: 26 additions & 0 deletions corpus/fuser/23.7/meta.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
[bless]
provenance = "agent"

[tool]
name = "fuser"
version = "23.7"
platform = "ubuntu-24.04"
captured_with = "audit/queue-captures/fuser (seed 7 maintainer audit)"

# fuser is on spec section 6 rule 0's thirteen-program list (signals
# processes): probed only as `fuser --help`, which this build declines
# and answers on stderr.
[[capture]]
argv = ["fuser", "--help"]
stdout = "help.txt"
stderr = "help.stderr.txt"
exit_code = 1

[contract]
expected_framework = "generic"
# S-172: `-SIGNAL` is one whole single-dash-long spelling. The unfixed
# parser split it into `-S` valued `"IGNAL"`.
must_contain_flags = ["-SIGNAL", "--all", "--kill", "--namespace"]

[contract.must_not_value_name]
"-SIGNAL" = "IGNAL"
4 changes: 1 addition & 3 deletions corpus/fuser/audit-seed/expected.snap
Original file line number Diff line number Diff line change
Expand Up @@ -78,9 +78,7 @@ flags:
sources:
- help-text
- spellings:
- -S
value_name: IGNAL
value_kind: Required
- -SIGNAL
description: send this signal instead of SIGKILL
provenance:
sources:
Expand Down
136 changes: 136 additions & 0 deletions corpus/lshw/02.19/expected.snap
Original file line number Diff line number Diff line change
@@ -0,0 +1,136 @@
name: lshw
description: Hardware Lister (lshw) -
usage:
- 'usage: /usr/bin/lshw [-format] [-options ...]'
- ' /usr/bin/lshw -version'
flags:
- spellings:
- -version
description: print program version ()
provenance:
sources:
- help-text
- spellings:
- -html
group: format can be
description: output hardware tree as HTML
provenance:
sources:
- help-text
- spellings:
- -xml
group: format can be
description: output hardware tree as XML
provenance:
sources:
- help-text
- spellings:
- -json
group: format can be
description: output hardware tree as a JSON object
provenance:
sources:
- help-text
- spellings:
- -short
group: format can be
description: output hardware paths
provenance:
sources:
- help-text
- spellings:
- -businfo
group: format can be
description: output bus information
provenance:
sources:
- help-text
- spellings:
- -class
value_name: CLASS
value_kind: Required
group: options can be
description: only show a certain class of hardware
provenance:
sources:
- help-text
- spellings:
- -C
value_name: CLASS
value_kind: Required
group: options can be
description: same as '-class CLASS'
provenance:
sources:
- help-text
- spellings:
- -c
value_name: CLASS
value_kind: Required
group: options can be
description: same as '-class CLASS'
provenance:
sources:
- help-text
- spellings:
- -disable
value_name: TEST
value_kind: Required
group: options can be
description: disable a test (like pci, isapnp, cpuid, etc. )
provenance:
sources:
- help-text
- spellings:
- -enable
value_name: TEST
value_kind: Required
group: options can be
description: enable a test (like pci, isapnp, cpuid, etc. )
provenance:
sources:
- help-text
- spellings:
- -quiet
group: options can be
description: don't display status
provenance:
sources:
- help-text
- spellings:
- -sanitize
group: options can be
description: sanitize output (remove sensitive information like serial numbers, etc.)
provenance:
sources:
- help-text
- spellings:
- -numeric
group: options can be
description: output numeric IDs (for PCI, USB, etc.)
provenance:
sources:
- help-text
- spellings:
- -notime
group: options can be
description: exclude volatile attributes (timestamps) from output
provenance:
sources:
- help-text
- spellings:
- -format
provenance:
sources:
- help-text-synopsis
- spellings:
- -options
provenance:
sources:
- help-text-synopsis
detected_framework: BSD-terse
provenance:
sources:
- help-text
confidence: 0.8
children_filled: true
24 changes: 24 additions & 0 deletions corpus/lshw/02.19/help.stderr.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
Hardware Lister (lshw) -
usage: /usr/bin/lshw [-format] [-options ...]
/usr/bin/lshw -version

-version print program version ()

format can be
-html output hardware tree as HTML
-xml output hardware tree as XML
-json output hardware tree as a JSON object
-short output hardware paths
-businfo output bus information

options can be
-class CLASS only show a certain class of hardware
-C CLASS same as '-class CLASS'
-c CLASS same as '-class CLASS'
-disable TEST disable a test (like pci, isapnp, cpuid, etc. )
-enable TEST enable a test (like pci, isapnp, cpuid, etc. )
-quiet don't display status
-sanitize sanitize output (remove sensitive information like serial numbers, etc.)
-numeric output numeric IDs (for PCI, USB, etc.)
-notime exclude volatile attributes (timestamps) from output

Empty file added corpus/lshw/02.19/help.txt
Empty file.
Loading
Loading