Skip to main content

silent-claim-audit

Offline auditing of documented terminal-output claims against Python source.

A stdlib-only static auditor: executes none of the target code, uses no network, and never reads .env contents. Reads root README.md and docs/**/*.md.

Usage

python3 -m pip install .
silent-claim-audit path/to/project --json
python3 -m silent_claim_audit . --verbose --ignore 'vendor/*' --fail-on HIGH
PYTHONPATH=src python3 -m unittest discover -s tests -v
python3 -m build

The directory defaults to the current directory. Repeatable --ignore globs match relative paths and prune matching directories. --verbose adds evidence to text. --version reports 0.1.0. JSON contains findings, verified_claims, claims, errors. Exit 0 means pass, 2 means findings at threshold, 1 means usage/read/parse error. Default --fail-on MEDIUM fails for either severity; HIGH still reports MEDIUM.

Rules

Rule Severity Condition
documented-silent-claim-false HIGH Silent family with production evidence
documented-silent-claim-false-test-only MEDIUM Silent family with only test evidence
documented-verbose-claim-false HIGH Verbose family with evidence absent
documented-verbose-claim-false-test-only MEDIUM Verbose family with only test evidence

Each family produces one finding with all evidence. Missing production source produces one HIGH finding per claimed family with no-source evidence. Both families are independent. Silent claims without any evidence and verbose claims with production evidence are verified. Without claims, the audit passes.

Exact phrases

Lowercase, expand n't to ' not', replace hyphens with spaces, collapse whitespace. Fenced code is excluded; inline code counts. Negation words no, not, never, without suppress only verbose claims. Bare silent, quiet, verbose, output words are excluded. Examples and the complete vocabulary follow:

SILENT:
silent mode
quiet mode
runs silently
runs quietly
silent by default
quiet by default
is silent
is quiet
no output
prints nothing
does not print
does not output
does not log
no stdout
no console output
suppresses output
no logging
VERBOSE:
verbose mode
verbose by default
is verbose
verbose output
verbose logging
detailed output
logs every step
prints every step
chatty output
chatty mode
Matches: doesn't print; quiet-mode; does not print
No claim: never prints; no verbose output; is not verbose; is not silent

Evidence

Kind Calls
print Builtin print, including file=
logging debug/info/warning/warn/error/exception/critical/log on logging or direct getLogger assignment
stream sys.stdout/sys.stderr write/writelines, including attribute chains
click click.echo/secho
rich Console constructor assignment receiver print; unassigned console.print
tqdm tqdm(...), any receiver.tqdm(...), tqdm.write

Per-file imports track aliases for logging, sys, click. Deduplicate by file, line, kind. Test directories, fixtures, test_*.py, *_test.py are separate evidence; docs and examples are excluded. Symlinked files and directories are skipped.

Honest limitations

Existence is checked, not volume: a single print suffices. Dead code counts. print(file=...) counts even when writing a file. Any function, class, or parameter named print suppresses builtin evidence throughout its file, without scope resolution. Direct assignment only tracks loggers and consoles; dynamic code and reassignment effects are not resolved. The unassigned conventional console name is a simplification. tqdm construction counts even if disabled at runtime, because progress normally writes to stderr. Exact phrases miss paraphrases. Warnings (warnings.warn/warn_explicit), string literals, comments, subprocess shell echo/printf strings, file writes (open(...).write, Path.write_text), and logging configuration (basicConfig/getLogger/disable/setLevel) are excluded. There is no shell parsing or proof of successful-run reachability.

Differentiation

Neighbour Scope
privacy-claim-audit Network/telemetry rather than terminal writes
readonly-claim-audit Filesystem writes rather than stdout/stderr
error-claim-audit Failure behaviour rather than successful-run chatter
interactive-claim-audit User reads rather than user writes
bandit/ruff Code issues rather than documentation promises
logging/click/rich/tqdm docs Output primitives rather than docs-versus-code truth

Requires Python 3.9+. MIT licensed. Runtime dependencies: none. Build tooling: setuptools, wheel, build. Fixtures ship in the sdist via MANIFEST.in.

Metadata

Release files for silent-claim-audit 0.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for silent-claim-audit 0.1.0
File Size Uploaded Provenance Actions
silent_claim_audit-0.1.0.tar.gz 10.1 kB Without provenance Details for silent_claim_audit-0.1.0.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for silent-claim-audit 0.1.0
File Interpreter ABI Platform Actions
silent_claim_audit-0.1.0-py3-none-any.whl Python 3 none any Details for silent_claim_audit-0.1.0-py3-none-any.whl

Total release size: 18.2 kB

Release files / silent_claim_audit-0.1.0.tar.gz

Download URL silent_claim_audit-0.1.0.tar.gz
Size 10.1 kB
Tags Source
SHA-256 checksum
How to use checksums
991bb84845057bf1e1779a84a23b880f5b591c1f84114b0b78f26e96c42b358c
BLAKE2b-256 checksum
How to use checksums
f41c2975e28c0d4eafc6e890f7112d534d877f42fe59330d3018b927a20b6a16
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.3

Release files / silent_claim_audit-0.1.0-py3-none-any.whl

Download URL silent_claim_audit-0.1.0-py3-none-any.whl
Size 8.1 kB
Tags Python 3
SHA-256 checksum
How to use checksums
7955f4ff58f76af5c43bfb51ec7ffb641b2369fe0121bc347643d724691746e5
BLAKE2b-256 checksum
How to use checksums
518b2cfc7a01568b75d1c1f78c43f5fe3c149a35e1d6f79d83aa5c404b9f5ba2
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.12.3

Security for silent-claim-audit 0.1.0

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

0.1.0 This release

2 release files No provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page