Skip to main content

enquiry-bench

An offline benchmark for routing, cited draft replies and abstention on a small fictional service-enquiry task. It scores prediction files you supply. It is not a customer-service agent, makes no model or network calls, and needs no accounts or third-party packages.

Status: 0.1.0 — released 2026-11-05 · github.com/failstocode66/enquiry-bench Exercised on Windows with CPython 3.12.12, 3.13.12 and 3.14.5. Other platforms are unverified.

  • Tests: on 2026-11-05 the 36-test suite was run from the release source tree against each of those three interpreters and passed in full each time: 36 passed, with no failures, errors or skips. A run without skips means every link fixture was created, so the native checks ran on real links: a symlinked file, parent directory and output, both aliases of a hard link, and a junction given as input, which was rejected with E_LINK while its target survived. The tests of refusal classification and of product-failure propagation also passed.
  • The 2026-11-03 validation run (CPython 3.14.5, 36 passed, no skips) used a non-elevated session (medium integrity, outside an AppContainer, UAC-filtered token). Nothing ran as administrator, and no OS, ACL, security or Developer Mode setting was changed. It shows the link checks working where links can be created. It does not show that the session was unrestricted, and it does not explain the earlier refusal below.
  • Earlier revisions: a first 30-test suite passed in full, link tests included. On the 34-test suite that followed, 32 passed, the junction test errored and the hard-link test skipped, both at fixture setup because creating the link was refused (access denied), so that was not a full pass. A standalone check without this package was refused the same way; the cause is not established.
  • Packaging: the 0.1.0 archives were built from the release source tree on 2026-11-05 with build 1.6.1 and setuptools 84.2.1. The source distribution carries all 20 project files plus generated metadata; the wheel carries exactly the 10 runtime files plus metadata and license, and declares no third-party dependencies. The wheel's 10 runtime files are byte-identical to those of the wheel validated on 2026-11-03. Installed with --no-index --no-deps into a fresh environment, the exact new wheel ran enquiry-bench demo outside the source tree and produced the figures below, with manifest.txt written. The same two archives are the assets of the v0.1.0 GitHub release, with their SHA-256 sums, and the files published on PyPI.

Install

From PyPI:

pip install enquiry-bench

Or the tagged release straight from the repository:

pip install "git+https://github.com/failstocode66/enquiry-bench@v0.1.0"

Requires Python 3.12 or later; older interpreters are refused with E_RUNTIME rather than run without Windows junction checks.

Quickstart

From a clone of the repository, or after either install above, skip the first line:

python -m pip install --no-deps .
enquiry-bench demo --output demo-out

The demo scores two bundled prediction files, both synthetic: an authored reference that matches the gold, and an always-abstain baseline generated from the case inputs. Neither is output measured from any model. The frozen fixture is designed to give the figures below, so they show the scorer working, not AI-model performance; confirm them in demo-out/summary.md.

metric reference always-abstain
joint task pass 48/48 12/48
route accuracy 48/48 12/48
abstention precision 24/24 24/48
abstention recall 24/24 24/24
answered coverage 24/48 0/48

Commands

Bundled inputs live in src/enquiry_bench/data/ and install with the package. The source distribution also carries tests/, docs/ and CHANGELOG.md; the wheel does not.

enquiry-bench validate --cases CASES --gold GOLD --knowledge KNOWLEDGE
enquiry-bench run --baseline always-abstain --cases CASES --knowledge KNOWLEDGE --output DIR
enquiry-bench score --cases CASES --gold GOLD --knowledge KNOWLEDGE --predictions PRED --output DIR
    [--repeat-predictions PRED2 ...] [--rates RATES]
enquiry-bench demo --output DIR

run never reads gold; score never executes file content. --output must be a new directory. score writes score.json (byte-reproducible), cases.csv, report.md, confusion.svg and manifest.txt (file hashes, written last). Errors are fixed codes that never echo input text or paths. Python equivalents: validate_files, run_baseline, score_files, demo.

Tests

python -m unittest discover -s tests

Needs the package installed or src on PYTHONPATH. The symlink, hard-link and junction tests create real links. A recognized refusal to create one (link type unsupported, access denied, privilege not held) skips that test with the reason, so its product check did not run and the skip is not a pass. Any other error while creating a link is reported as an error, and once a link exists its product checks run unchanged. No administrator rights, Developer Mode or permission changes are required or made.

What the numbers mean

The headline, joint task pass, needs the right route, the right abstention flag, a consistent route/flag pair, an exact acceptable draft and the exact expected citations. Draft match is exact comparison against a short authored list: a closed-format rubric, not a semantic judge. A reworded correct answer fails, and a citation that exists is not proof the draft is true. Results on this synthetic task say nothing about real-world model performance.

See metrics and schemas, synthetic provenance and the publication post.

Known gaps

  • Only Windows has been exercised (CPython 3.12.12, 3.13.12 and 3.14.5); other platforms are unverified.
  • Junction and hard-link rejection has been exercised only on Windows, in the sessions above. Wherever link creation is refused those tests skip, and a skip is not a pass. Why creation was refused where it was seen is not established.
  • The tests give qualified coverage of path handling, not a proven containment or security guarantee, and path checks have time-of-check races.

License

MIT. Copyright (c) 2026 Tyler Smith. The code and the invented fixtures share this license.

Metadata

Release files for enquiry-bench 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 enquiry-bench 0.1.0
File Size Uploaded Provenance Actions
enquiry_bench-0.1.0.tar.gz 38.7 kB Without provenance Details for enquiry_bench-0.1.0.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for enquiry-bench 0.1.0
File Interpreter ABI Platform Actions
enquiry_bench-0.1.0-py3-none-any.whl Python 3 none any Details for enquiry_bench-0.1.0-py3-none-any.whl

Total release size: 63.1 kB

Release files / enquiry_bench-0.1.0.tar.gz

Download URL enquiry_bench-0.1.0.tar.gz
Size 38.7 kB
Tags Source
SHA-256 checksum
How to use checksums
97173da6432631bea926f690a4c3c936c55fb61cdf1aac61669440e3e221033d
BLAKE2b-256 checksum
How to use checksums
1760fd445a4f436d600450b7cdb2cb09c48704232d8d97f362cfdde303a42681
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.5

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

Download URL enquiry_bench-0.1.0-py3-none-any.whl
Size 24.3 kB
Tags Python 3
SHA-256 checksum
How to use checksums
de309f647d2c1392a272880f35d7f0f37d0cb769e09dd75d5938962d249e4315
BLAKE2b-256 checksum
How to use checksums
ee0f9ed94b40e1aa1228aef21561154b9aa9f9fc6edcd1d9acbbfc2d743d9f8a
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/7.0.0 CPython/3.14.5

Security for enquiry-bench 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