From 2724f30ee090659c2b719415c81320a0341259b3 Mon Sep 17 00:00:00 2001 From: garrytan Date: Mon, 26 Oct 2026 15:44:01 +0000 Subject: [PATCH] docs: the train verdict prints the known+unknown cost form only when some but not every case is priced The second /document-release audit tightened docs/TESTING_INTERNALS.md and docs/troubleshooting.md#cost-unknown: a train record with no priced case prints no cost at all (classifyGate's cost is null). The CHANGELOG bullet says the same. Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com> --- CHANGELOG.md | 2 +- docs/TESTING_INTERNALS.md | 5 +++-- docs/troubleshooting.md | 4 ++-- 3 files changed, 6 insertions(+), 5 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index c4485a5e8..9597eb623 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,7 +9,7 @@ ### Fixed - **`scripts/lib/paid-report.ts`**: when a shard ran exactly one case (every case shard since W5a), its result records belong to that case even when they are named by a display label, so the trial's `cost_usd` is the record's and `cost_known` is no longer false; a failed trial in such a shard also takes its `failure_class`, `exit_reason` and `error` from that record (train-gate classes a red `infra` record INFRA instead of VERDICT) where it was a bare `assertion` with the JUnit message. No case's pass or fail changes. A multi-case shard whose records carry display labels keeps those trials cost-unknown rather than guessing which case paid. The train record's per-case `cost_usd` (scripts/train-gate.ts) and the slice report's headline now agree for case shards; the headline was never wrong. -- **`lib/ship-queue-train-verdict.ts`**: the `ATTEMPT:` line prints `cost=$ known + of case(s) cost unknown` when any panel has no cost, and the bare `cost=$` only when every panel is priced. +- **`lib/ship-queue-train-verdict.ts`**: the `ATTEMPT:` line prints `cost=$ known + of case(s) cost unknown` when some but not every panel is priced, the bare `cost=$` only when every panel is priced, and no cost at all when none is (unchanged). ### Tests - `test/gstack-ship-policy.test.ts` pins the live fill rule (3 PRs or one hour) and exercises `fillDue` with the live block at 59 and 60 minutes and at 3 PRs. diff --git a/docs/TESTING_INTERNALS.md b/docs/TESTING_INTERNALS.md index 9bb6162c6..ed8b885c4 100644 --- a/docs/TESTING_INTERNALS.md +++ b/docs/TESTING_INTERNALS.md @@ -650,8 +650,9 @@ carry display labels leaves those trials cost-unknown rather than guessing which case paid (`junitCensus` in `scripts/lib/paid-report.ts`). An absent field means known. Census and marathon cost lines print the known sum and `N of M trial(s) cost unknown`, and a train verdict's `ATTEMPT:` line prints -`cost=$ known + of case(s) cost unknown` when any case in the -train record has no cost, never a bare total over unknowns. +`cost=$ known + of case(s) cost unknown` when some but not +every case in the train record has a cost (a record with no priced case prints +no cost at all), never a bare total over unknowns. **Session ledger.** Every runner (session-runner, the Agent SDK runner diff --git a/docs/troubleshooting.md b/docs/troubleshooting.md index d116a69fa..e7230b7d3 100644 --- a/docs/troubleshooting.md +++ b/docs/troubleshooting.md @@ -2183,8 +2183,8 @@ unknown. So is a trial in a multi-case shard whose result records are named by a display label rather than the case id, because no record can be attributed to it (a one-case shard's records are its case's). Only the known sum is shown. A train verdict's `ATTEMPT:` line reports the same as `cost=$ known -+ of case(s) cost unknown`, and a bare `cost=$` only when every case -in the train record is priced. ++ of case(s) cost unknown`, a bare `cost=$` only when every case +in the train record is priced, and no cost at all when none is. **Fix.** None needed; this is informational.