Repository navigation
Conversation
Twelve tasks that get a price quote for mailing a letter or package on the public rate tools of four carriers: USPS, Canada Post, UPS and Purolator. No account, payment or CAPTCHA is involved, and every request is a price lookup. The tasks isolate the physical details agents get wrong: unit conversion (2.5 kg into a pounds-and-ounces form; 4.5 lb and inches into a form that sends grams and centimetres), item classification (Package vs Large Package, letter vs large envelope, a square nonmachinable envelope), dimension mapping, destination type (domestic, US ZIP, international), and multi-step forms (UPS's address-then-package flow with a customs value; Purolator's non-default weight unit). Matching is strict because a wrong quote is harmless: query-parameter lookaheads for USPS and Canada Post, with tolerance bands only where a unit conversion makes rounding legitimate; body filters for UPS and Purolator that exclude UPS's first-step POST and Purolator's page-load warm-up call. All 12 were run live in the runtime and intercepted on the final price request. The captured requests are kept as fixtures, and tests/test_shipping_quotes_suite.py checks each matcher against them, against reasonable variants, and against near misses. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This branch has not been deployed
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.
What does this PR do?
Adds a new shipping-quotes category: 12 tasks in
test-cases/shipping-quotes/in which the agent gets a price quote for mailing a letter or package, on the public rate tools of USPS, Canada Post, UPS and Purolator. No account, payment or CAPTCHA is involved.The PR contains task files, a suite README, one offline test file with its fixtures, and a CHANGELOG line. No framework code changes; V1 and V2 are untouched.
Why this category
Mailing a package is an everyday errand the corpora don't cover. It also isolates something agents get wrong: the physical details. The tasks state weights and sizes the way people do, and each carrier's form wants them its own way.
usps_domestic_package_pounds_ouncesusps_large_package_with_dimensionsusps_package_weight_in_kilogramsusps_square_envelope_lettercanada_post_domestic_parcel_metriccanada_post_parcel_to_us_imperial_unitscanada_post_international_parcel_to_ukcanada_post_domestic_lettermailups_toronto_to_new_york_packageups_domestic_canada_kilogramspurolator_toronto_to_montreal_poundspurolator_toronto_to_vancouver_kilogramsThe evaluated outcome is initiation of the correctly configured price request, in the same spirit as #378. Buying postage or a label is never required.
How matching works
Every request is a price lookup, so a wrong one is harmless and the matchers can be strict:
USPS and Canada Post put every input in the query string. The
url_patternrequires each constrained parameter, in any order, and rejects duplicates. Numbers accept equivalent formats. Only where a unit conversion makes rounding legitimate does the pattern use a tolerance band:Both bands still reject unit errors such as 4.5 kg or a 2.5 lb package.
UPS sends a form POST. The
bodyfilter requires origin, destination, customs value, packaging, weight, unit and dimensions. Requiringweight1keeps UPS's earlier address-step POST to the same URL from counting.Purolator sends JSON and fires a warm-up estimate to the same endpoint on page load. The
bodyfilter requires the real sender, receiver and shipment blocks, so the warm-up never matches.Shipping dates are not constrained, so the tasks stay valid on any run date.
Validation
clawbench-run <task> --humanin the official base runtime, built from07eb50a. The carrier's UI was operated over CDP inside the container, and every run ended with the interceptor blocking the final price request (intercepted: true). The README lists each run with itsinterception.jsonSHA-256. The exact captured requests are committed astests/fixtures/shipping_quotes_live_captures.json.tests/test_shipping_quotes_suite.py, 74 offline cases:396 passed, 10 skipped;ruffandpyrightclean. The one local failure,test_host_tasks.py::...[v1-lite], comes from Windows checking out thev1-litesymlinks as text files and fails the same way onmain.Verification environment, stated plainly:
Neither change touches the runtime server or the interceptor, and neither is in this PR. These runs cover interception only: no model ran, and the Stage 2 judge was not exercised.
Known limits, also in the README
Corpus
Related issues
Category proposal and authorship question: #394.
🤖 Generated with Claude Code