Repository navigation
Releases
campus v2.3.0 — prompt-surface cleanup, disclosure hardening, code-tag binding
campus v2.3.0 — prompt-surface cleanup, disclosure hardening, code-tag binding
Version manifest
- code commit:
dba4f1853f75e3d230ab258afe104645ecde7fec(tagcampus-v2.3.0) - dataset revision:
cae92aeb8d086a159b68f38d63b036ecd9d3bcbb(Hugging FaceZitrackHF/tau2-zh-campus) - tests: 187 pytest (incl. the 50-task gold-replay CI)
- policy: v1.4.2 (unchanged); scoring contract fields byte-identical to v2.2.0
- public data validator: PASS 2079 checks (task-set 2063 + manifest-binding 16)
What changed
- Task statements: 16 evaluation-register terms across 14 string leaves naturalized to domain wording (statement text only;
communicate_info/env_assertions/initial_state/ per-taskuser_tools/ gold-action fields unchanged). - Model-visible tool descriptions: the six descriptions that still carried authoring labels were rewritten to self-contained domain wording (policy-clause and behavioral facts preserved); code comments swept the same way.
manifest.jsonbinds code to data via acode_tagtwin with placeholder-absence guards; the concrete commit sha and dataset revision are recorded in this release manifest.- New guards: tool-description and task-text forbidden-token lints (with counterexamples) and semantic snapshot tests pinning inline guidance to tool behavior.
- Release assets add Wilson 95% confidence intervals for every leaderboard row and difficulty tier, an explicit statistical-indistinguishability note for the tied ranks, in-table as-run policy-text and anchor-row qualifiers, a unified cost-caliber table, calibration-item locatability disclosure, and a downstream training-corpus caution.
Disclosure obligations
- Leaderboard numbers remain the v2.0.0-era as-run results (no re-runs); they were produced under the first-generation policy text — see the policy-text eras disclosure in
leaderboard-page.md. - The anchor row's embedded task copies differ from the published task set in 12 scoring fields (task-era disclosure, itemized in
disclosure-blocks.md). - 24 of the 50 tasks carry no positive process signal (zero-signal disclosure); COMMUNICATE matching is literal-substring based and format-fragile (calibration summary in
judge-calibration-method.md). - Run files retain as-run authoring annotations inside per-sim policy copies and message trajectories; see the downstream training-corpus caution in
MODEL-OUTPUT-NOTE.md.
Asset freeze policy
Assets of earlier tags are immutable. This release's evidence is attached here in full (33 files). SHA256SUMS.txt covers the other 32 files; per-file sha256 and change history are in asset-manifest.json.
Verification
validate-published-tasks.py --data-dir <dataset> → PASS 2079 checks (task-set 2063 + manifest-binding 16). All 33 assets are digest-verified against SHA256SUMS.txt.
All assets in this release are the single source for the numbers they contain.
tau2-zh-campus v2.2.0
tau2-zh-campus v2.2.0 — task-statement self-containment, disclosure set, data hygiene.
Task statements (published tasks.json): 68 string leaves rewritten to self-contained wording — the 15 tasks that cited an unpublished internal tool-specification document now carry inline operational guidance (tool-chain timing, preconditions and parameter semantics preserved); authoring terms removed from a persona and a purpose; evaluation-jargon vocabulary naturalized; one purpose's quoted rejection note rephrased as indirect speech (it paraphrases the runtime rejection wording rather than quoting it). Full before/after itemization ships as task-statement-cleanup-record.md (marker-occurrence accounting, including the 101-sites/77-leaves reconciliation of the previous release).
Scoring contract fields are byte-identical to v2.1.0: communicate_info, env_assertions, initial_state, per-task user_tools, and the core fields of every gold action (action_id/requestor/name/arguments); per-task double-hash replay unchanged. Leaderboard numbers remain the v2.0.0-era as-run results (no re-runs).
Disclosure set (domain README §3/§4, bilingual): the three policy-text eras (per-sim as-run 5,663 chars / run-level v1.4.1 5,515 / published v1.4.2 5,541), task-era detail (the anchor row carries first-generation assertion strings), limitations (24/50 zero-signal tasks; assertion discriminability; rule-reproducibility vs human-agreement distinction; agent-side authorization asymmetry), trial-level terminations with the M16 root-cause note (friction points recorded for a future iteration; tool contract unchanged), the difficulty-tier table with its non-monotonic rows, run-code provenance, and cost caliber.
Data hygiene: student profile fields rectified (gender aligned to name semantics; 40 unique masked phone/ID values with disjoint tails — display fields only, no grading surface reads them). manifest.json binds code to data (per-file sha256 + version twins). New SCHEMA.md field dictionary.
Evidence & governance: asset-manifest.json (per-file sha256, platform upload record, content history) with a freeze policy — old-tag assets are immutable from this release onward and new evidence only ships under new tags; harness endpoint/UA metadata scrubbed from the run files (model reasoning traces retained with a redistribution note in MODEL-OUTPUT-NOTE.md); the second-round calibration batch published (results-golden-full-r2.json) with per-entry public locators in the judge census; validate-published-tasks.py (PASS 2063).
Version manifest (dataset_revision fetched programmatically from the HF API)
{
"benchmark_version": "tau2-zh-campus-2.2.0",
"code_commit": "a9e04a4782337674ddd5dc2833d3745b62e09553",
"dataset_revision": "0c949f678a2ae2877b4adc6e54f5645aa1067f02",
"policy_version": "1.4.2",
"evaluator_protocol": "tau2-v1.0.1-compatible",
"task_count": 50,
"gold_replay": "50/50",
"test_count": 173,
"requires_python": ">=3.12,<3.14"
}Verification: SHA256SUMS.txt and asset-manifest.json ship with every asset and cross-check pairwise (0 mismatches); validate-published-tasks.py (shipped alongside) reports PASS 2063 checks against the released data directory; the test suite passes in full (173 tests), including the 50-task reference-action replay with per-task dual hashes stable across reruns; leaderboard figures recomputed from the shipped run files match leaderboard-final.json (5/5 rows, 0 differences).
Version narrative: the domain README changelog (§8) is the single source of version narrative; where channels disagree, it prevails.
tau2-zh-campus v2.1.0 — task-statement cleanup & guard expansion
tau2-zh-campus v2.1.0 — task-statement cleanup & guard expansion (policy v1.4.2).
Task-statement cleanup (published tasks.json): every string leaf swept for authoring markers — 101 sites cleaned: 50 leading test-point fragments, internal decision/version tags across purposes, relevant-policy notes, and gold-action info strings, ticket-spec references genericized, plus two author-version annotations inside user-scenario scripts (an explicit two-site exception to the "instructions byte-identical" rule). M06's statement rewritten to its actual zero-write refusal semantics; E12's stale expectation dropped. Full before/after table in the release engineering record.
Scoring contract fields are byte-identical to v2.0.0: communicate_info, env_assertions, initial_state, per-task user_tools, and the core fields of every gold action (action_id/requestor/name/arguments). Four gold-action info text sites were cleaned (M05 ×1, H01 ×2, H15 ×1) — free-text annotations only, never read by the evaluator. Per-task double-hash replay is identical to v2.0.0. Leaderboard numbers remain the v2.0.0-era as-run results (no re-runs); the per-task statement deltas are exactly the cleaned sites above.
Policy v1.4.2: adds a single version footer line (article text unchanged).
Guards & code: full-leaf marker scan and task self-consistency lint (tool-surface reachability, refusal semantics for zero-action tasks, user-side gold actions) join the CI; three upstream-contract pins; solo_mode now raises per upstream convention; io_utils gains UTF-8 on write paths and trajectory readers (Windows GBK). pytest 157→167.
Version manifest (dataset_revision fetched programmatically from the HF API)
{
"benchmark_version": "tau2-zh-campus-2.1.0",
"code_commit": "72f430a6f097ef34461b6f38db172aa5a49f9243",
"dataset_revision": "d34e2b3b1056891dcfd6f4b6b4d8dab49697b73b",
"policy_version": "1.4.2",
"evaluator_protocol": "tau2-v1.0.1-compatible",
"task_count": 50,
"gold_replay": "50/50",
"test_count": 167,
"requires_python": ">=3.12,<3.14"
}Verification: gold-replay CI 50/50 · pytest 167 green (fork CI: campus-tests) · sensitive-info pattern scan (7 classes, see the security-scan-patterns asset) clean · full-leaf marker scan clean.
tau2-zh-campus v2.0.0
tau2-zh-campus v2.0.0 — data-contract release.
Data contract changes (public dataset & raw runs):
- Internal QA metadata fully removed:
description.notesdropped across all 50 tasks,issueskeys deleted, P0x hint fragments scrubbed from agent-visiblepurpose/relevant_policies; embedded task copies inside the published raw runs normalized to the same contract (trajectory bodies verbatim). policy.mdmeta-annotations scrubbed (13 grading-marker tags + internal version labels + header changelog) — article text unchanged → policy v1.4.1; as-run policy text inside historical trajectories preserved verbatim.
Calibers recomputed: 54 env_assertions (25 tasks) · 29 zero-write tasks (20 with explicit refusal semantics) · pytest 147→157 (81 test functions incl. the 50-task gold-replay parametrization).
Release engineering (v1.1.5→v2.0.0): fork-side CI (campus suite on every push/PR), UTF-8 decoding fix in io_utils (Windows GBK), root-README fork banner, runtime benchmark metadata (tau2.domains.campus.__version__), raw runs & judge calibration published as release assets (see files below).
Version manifest (dataset_revision fetched programmatically from the HF API)
{
"benchmark_version": "tau2-zh-campus-2.0.0",
"code_commit": "7efc78d3cd8a1e01b702d24d0bfe59e26da76a74",
"dataset_revision": "98c32e9f81fd2ea4e8676e8130c624a40b7d88bc",
"policy_version": "1.4.1",
"evaluator_protocol": "tau2-v1.0.1-compatible",
"task_count": 50,
"gold_replay": "50/50",
"test_count": 157,
"requires_python": ">=3.12,<3.14"
}Verification: gold-replay CI 50/50 · pytest 157 green · sensitive-info pattern scan (7 classes, see the security-scan-patterns asset) clean · as-run trajectory text preserved verbatim (historical in-run policy and task statements included) · headline numbers reproducible from the published per-model results plus the -overlay files (see leaderboard-final.json)
tau2-zh-campus v1.1.5
tau2-zh-campus v1.1.5 — release discoverability & runtime version metadata (V3.0 review round).
Changes (code-only):
- Root
README.mdgains a fork banner (latest tag / domain README / dataset / scoring protocol / upstream-PR links) so release tags are self-explanatory on clone. tau2.domains.campusnow exposes runtime-readable__version__(benchmark axis),POLICY_VERSION,SCORING_PROTOCOL— the engine package version (tau2 == 1.0.1) stays pinned inpyproject.tomlfor leaderboard comparability.
Version manifest (dataset_revision fetched programmatically from the HF API)
{
"benchmark_version": "tau2-zh-campus-1.1.5",
"code_commit": "2d3eed5c709f05d6c0dc76378f3907e65375e7a1",
"dataset_revision": "503c536c380663ad54f9f37fe4d8b149401244ba",
"dataset_note": "data files unchanged since v1.1.3; revision includes the dataset card",
"policy_version": "1.4",
"evaluator_protocol": "tau2-v1.0.1-compatible",
"task_count": 50,
"gold_replay": "50/50",
"test_count": 147,
"requires_python": ">=3.12,<3.14"
}Verification: gold-replay CI 50/50 · pytest 147 green · check_tasks 2113 PASS · 7-pattern scan clean.
tau2-zh-campus v1.1.4
tau2-zh-campus v1.1.4 — round-4 review follow-up (art. 33 closure details).
Fixes (both Medium items of the round-4 Bugbot review of 3336912, confirmed and fixed):
- Proxy authorization validity now anchors to the signing time (
auth_sig.acted_at + 30d), per art. 33 — not the later document-upload time. Regression:test_proxy_late_upload_validity_anchors_signing(validity = signing+30d even when the upload happens hours later). get_service_requests(certificates) distinguishes the two causes of pending-signature: unsigned → 缺签署(代领授权书); signed-but-missing-ID → 缺受托人证件影像(第 33 条)— agents are no longer steered to re-sign. No gold task contains the affected strings.
Version manifest
{
"benchmark_version": "tau2-zh-campus-1.1.4",
"code_commit": "548e7bb",
"dataset_revision": "ed1e20e222274110d73e4141d1c16a9cd1780c5f",
"policy_version": "1.4",
"evaluator_protocol": "tau2-v1.0.1-compatible",
"task_count": 50,
"gold_replay": "50/50",
"test_count": 146,
"requires_python": ">=3.12,<3.14"
}Dataset: unchanged since v1.1.3 (HF revision ed1e20e2…); this is a code-only patch.
Verification: gold-replay CI 50/50 · pytest 146 green · check_tasks 2113 PASS · 7-pattern scan clean.
tau2-zh-campus v1.1.3
tau2-zh-campus v1.1.3 — release-engineering pass.
Code (dev/campus @ 6587dc5):
- Proxy-pickup document closure (art. 33): signature + validly-uploaded proxy ID, in either order; confirming without the document holds the certificate at pending-signature. (
3336912) create_ticket's optionaltarget_grade_idis window-input only, no longer persisted — agents passing it explicitly get byte-identical terminal states to the default path. (3336912)- Public
tasks.jsonno longer carries internal QAissuesmetadata; evaluation fields unchanged. (6587dc5) - README: pin-revision guidance (
git clone --branch campus-v1.1.3 ...); the default branchtau2-zhis a showcase snapshot, not the benchmark code.
Data: HF ZitrackHF/tau2-zh-campus @ dataset revision ed1e20e222274110d73e4141d1c16a9cd1780c5f (tasks.json issues-stripped; card v1.1.3 notes).
Version manifest
{
"benchmark_version": "tau2-zh-campus-1.1.3",
"code_commit": "6587dc51d0c9b23b7fd8df324f9065c8d9fccefb",
"dataset_revision": "ed1e20e222274110d73e4141d1c16a9cd1780c5f",
"policy_version": "1.4",
"evaluator_protocol": "tau2-v1.0.1-compatible",
"task_count": 50,
"gold_replay": "50/50",
"test_count": 144,
"requires_python": ">=3.12,<3.14"
}Verification: gold-replay CI 50/50 · pytest 144 green · check_tasks 2113 PASS · 7-pattern security scan clean · online HF tasks.json issues-count = 0 (byte-identical to repo).