mirror of
https://github.com/garrytan/gstack.git
synced 2026-09-01 02:40:47 +02:00
refactor(test): mechanical sweep — 298 paid-test timeouts onto eval-budget tiers
69 files, both shapes (trailing bun-test budgets and runner timeout/timeoutMs options), ROUND-UP ONLY so nothing that passed can start failing: 75 → JUDGE_MS, 137 → CAPTURE_MS, 74 → CAPTURE_LONG_MS, 9 → PTY_MS, 3 → PTY_LONG_MS. Raw >=60s literal count in the paid scope: 395 → 97, of which 51 are non-timeout noise (fixture dates, run IDs) and 46 are enumerated justified holds (comment-carrying calibrated budgets, poll-loop constants, utility spawn waits, and the seven physical-ceiling 1_500_000 sites). The eval-budgets policy ratchet keeps the residue from regrowing. Known collapse: where an inner runner budget and its enclosing test budget now share a tier, the old stagger is gone — an overrun surfaces as a bun test timeout instead of a graceful runner timeout (diagnosability trade, not a correctness one). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Fable 5
parent
74ae357e0f
commit
6841183c35
@@ -26,6 +26,7 @@
|
||||
* Periodic tier (Codex non-determinism). Cost: ~$2-3 per full run.
|
||||
*/
|
||||
import { describe, test, expect, beforeAll, afterAll } from 'bun:test';
|
||||
import { CAPTURE_MS, CAPTURE_LONG_MS } from './helpers/eval-budgets';
|
||||
import { runCodexSkill, installSkillToTempHome } from './helpers/codex-session-runner';
|
||||
import type { CodexResult } from './helpers/codex-session-runner';
|
||||
import { EvalCollector } from './helpers/eval-store';
|
||||
@@ -186,7 +187,7 @@ describeCodex('Codex Plan Format — CEO Mode Selection', () => {
|
||||
const result = await runCodexSkill({
|
||||
skillDir,
|
||||
prompt: `Read the plan-ceo-review skill. Read plan.md (the plan to review). Proceed to Step 0F (Mode Selection) where the skill presents 4 mode options (SCOPE EXPANSION, SELECTIVE EXPANSION, HOLD SCOPE, SCOPE REDUCTION) via AskUserQuestion. These options differ in kind (review posture), not coverage. ${captureInstruction(outFile)}`,
|
||||
timeoutMs: 300_000,
|
||||
timeoutMs: CAPTURE_MS,
|
||||
cwd: planDir,
|
||||
skillName: 'gstack-plan-ceo-review',
|
||||
sandbox: 'workspace-write',
|
||||
@@ -208,7 +209,7 @@ describeCodex('Codex Plan Format — CEO Mode Selection', () => {
|
||||
// kind-differentiated: no fabricated score, must have note
|
||||
expect(captured).not.toMatch(COMPLETENESS_RE);
|
||||
expect(captured).toMatch(KIND_NOTE_RE);
|
||||
}, 360_000);
|
||||
}, CAPTURE_LONG_MS);
|
||||
});
|
||||
|
||||
describeCodex('Codex Plan Format — CEO Approach Menu', () => {
|
||||
@@ -226,7 +227,7 @@ describeCodex('Codex Plan Format — CEO Approach Menu', () => {
|
||||
const result = await runCodexSkill({
|
||||
skillDir,
|
||||
prompt: `Read the plan-ceo-review skill. Read plan.md. Proceed to Step 0C-bis (Implementation Alternatives / Approach Menu) where the skill generates 2-3 approaches (minimal viable vs ideal architecture) and presents them via AskUserQuestion. These options differ in coverage so Completeness: N/10 applies. ${captureInstruction(outFile)}`,
|
||||
timeoutMs: 300_000,
|
||||
timeoutMs: CAPTURE_MS,
|
||||
cwd: planDir,
|
||||
skillName: 'gstack-plan-ceo-review',
|
||||
sandbox: 'workspace-write',
|
||||
@@ -245,7 +246,7 @@ describeCodex('Codex Plan Format — CEO Approach Menu', () => {
|
||||
expect(captured.length).toBeGreaterThan(ELI10_LENGTH_FLOOR);
|
||||
expect(captured).toMatch(RECOMMENDATION_RE);
|
||||
expect(captured).toMatch(COMPLETENESS_RE);
|
||||
}, 360_000);
|
||||
}, CAPTURE_LONG_MS);
|
||||
});
|
||||
|
||||
describeCodex('Codex Plan Format — Eng Coverage Issue', () => {
|
||||
@@ -263,7 +264,7 @@ describeCodex('Codex Plan Format — Eng Coverage Issue', () => {
|
||||
const result = await runCodexSkill({
|
||||
skillDir,
|
||||
prompt: `Read the plan-eng-review skill. Read plan.md. In your Section 3 Test Review, generate ONE AskUserQuestion about test coverage depth where options are clearly coverage-differentiated: A) full coverage incl. edge + error paths (Completeness 10/10), B) happy path only (7/10), C) smoke test (3/10). ${captureInstruction(outFile)}`,
|
||||
timeoutMs: 300_000,
|
||||
timeoutMs: CAPTURE_MS,
|
||||
cwd: planDir,
|
||||
skillName: 'gstack-plan-eng-review',
|
||||
sandbox: 'workspace-write',
|
||||
@@ -282,7 +283,7 @@ describeCodex('Codex Plan Format — Eng Coverage Issue', () => {
|
||||
expect(captured.length).toBeGreaterThan(ELI10_LENGTH_FLOOR);
|
||||
expect(captured).toMatch(RECOMMENDATION_RE);
|
||||
expect(captured).toMatch(COMPLETENESS_RE);
|
||||
}, 360_000);
|
||||
}, CAPTURE_LONG_MS);
|
||||
});
|
||||
|
||||
describeCodex('Codex Plan Format — Eng Kind Issue', () => {
|
||||
@@ -300,7 +301,7 @@ describeCodex('Codex Plan Format — Eng Kind Issue', () => {
|
||||
const result = await runCodexSkill({
|
||||
skillDir,
|
||||
prompt: `Read the plan-eng-review skill. Read plan.md. In your Section 1 Architecture review, generate ONE AskUserQuestion about an architectural choice where the options differ in kind (e.g. Redis vs Postgres materialized view vs in-process cache — different kinds of systems with different tradeoffs, NOT more-or-less-complete versions of the same thing). ${captureInstruction(outFile)}`,
|
||||
timeoutMs: 300_000,
|
||||
timeoutMs: CAPTURE_MS,
|
||||
cwd: planDir,
|
||||
skillName: 'gstack-plan-eng-review',
|
||||
sandbox: 'workspace-write',
|
||||
@@ -321,5 +322,5 @@ describeCodex('Codex Plan Format — Eng Kind Issue', () => {
|
||||
// kind-differentiated: no fabricated score
|
||||
expect(captured).not.toMatch(COMPLETENESS_RE);
|
||||
expect(captured).toMatch(KIND_NOTE_RE);
|
||||
}, 360_000);
|
||||
}, CAPTURE_LONG_MS);
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user