From b6d4744dbcbc32a48c5fdcfcca6e6a92a39e83fe Mon Sep 17 00:00:00 2001 From: garrytan Date: Sat, 31 Oct 2026 19:26:10 +0000 Subject: [PATCH] fix: pre-landing review fixes (test pins an unpriced seat-metered arm) Co-authored-by: capy-ai[bot] <230910855+capy-ai[bot]@users.noreply.github.com> --- test/pricing-eval-plan.test.ts | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/test/pricing-eval-plan.test.ts b/test/pricing-eval-plan.test.ts index f8e41617f..68285ced4 100644 --- a/test/pricing-eval-plan.test.ts +++ b/test/pricing-eval-plan.test.ts @@ -238,6 +238,15 @@ describe('priced pilot', () => { expect(renderPilotReport(r)).toContain('settle at least 2 attempts per priced arm'); }); + test('#3653: a seat-metered arm needs no pricing row; an undeclared unpriced arm still refuses', () => { + const d = tmp(); + const dry = passingDryRun(d); + const s = startPilot({ out: path.join(d, 'seat'), cap: 1, n: 2, arms: ['gpt-5.4-mini', 'seat-only-model'], seatMetered: ['seat-only-model'], dryRun: dry }); + expect(s.error).toBeUndefined(); + expect(s.record.attempts.filter(a => a.model === 'seat-only-model').map(a => a.estimate_usd)).toEqual([0, 0]); + expect(startPilot({ out: path.join(d, 'undeclared'), cap: 1, n: 2, arms: ['seat-only-model'], dryRun: dry }).error?.code).toBe('EVAL_PRICE_MISSING'); + }); + test('#3653: pilot start --seat-metered reaches the ledger through the CLI', () => { const d = tmp(); const out = path.join(d, 'cli');