Nightly test suites: why we run them, and what each one should become

Fede asked on Nov 4: "Why do we need the nightly test suites, and what should each one become?" The answer, suite by suite, from the runs, issues and Slack.

2026-11-04 · every scheduled test suite, plus two on the Mac mini · read-only, measured 17:20Z to 19:00Z on main a248194281a · times UTC · companion to the #alerts noise retro

The answer

We need about half of them, and almost none of them reach a person today. Most suites say their reds go to an "8-hourly CI report". That report has never run on a schedule (one hand-started run, Oct 26), so a red lands in a GitHub issue nobody opens. In every channel we could measure, no person engaged, except Fede and Gera on the voice check, asking to remove it.

Some still catch real things. The nightly Clara evals date a breakage to the night it happened, and they show six Clara gaps that fail every night. time-travel shows 4 tests that will turn main red on Jan 1, 2027. The harnesses suite's red since Oct 28 is the test, not Clara: no real caller went unannounced. That is being checked now, not confirmed.

What each of the 18 becomes: keep 7, each with an owner for its reds; move 1 to weekly; 1 gets an owner or stops; shrink 1; pause 1; fix or delete 2; keep 2 retired or retiring; move 2 metrics to a dashboard; and 1 founder call on the security scan. The nightly Clara evals stay nightly but report new failures against last night instead of 37 always-red verdicts.

One table: every scheduled test suite

"Readers" means people, measured as replies, reactions, issue comments or closes by a person. Cost is compute over the last 30 days (Oct 5 to Nov 4, scheduled runs, job start to finish times the runner's minimum vCPU, so a lower bound) unless the cell says otherwise. No dollar figure for CI: the repo has no measured price per vCPU-hour. Subscription tokens per run: not measured, except for the Clara nightly.

Suite (cadence)What it protects that nothing else doesRecordWhat it ever caughtWhere reds go · who readsCostBecomes
Clara behaviour evals
clara-behavior-evals.yml (nightly)
The only per-case reading of main every day. The PR-time copy ran on 14 of 1,037 Clara PRs in 14 days (1.4%). Dates a breakage to one night. 0 green of 27 nights (Oct 9 to Nov 4). 73% of red domain-nights are 1 to 3 cases that pass on other nights. Led to 32 merged PRs (14 change Clara, 13 fix graders), all Oct 25 to 31. Caught 2 eval breaks within hours. Shows 6 real Clara gaps every night. GitHub issues only (33 open, 0 closed). 0 human comments, 0 reactions. ~40 runner-min a night; ~21M tokens a night, about $54 at list price, not billed (subscription) Keep nightly report new failures only, fix 2 broken packs, grade the models prospects get, give it a reader
Voice regression watch
Mac mini daemon (daily 09:00 CST)
Was the only scheduled run of the live voice agents. Protects nothing since Oct 31: ElevenLabs retired the endpoint it calls. 105 reports since Jul 19: 81 all pass, 24 red (9 real failures, 10 vendor or harness errors, 5 the retired endpoint). 1 Clara fix (#7058, Sep 4), against 7+ PRs maintaining the watch. #alerts post + email to Gera every morning. 2 human replies in 14 days, both asking to remove it. ≈0.80M ElevenLabs credits (≈$130, estimate from repo constants) to Oct 31; 0 since Retire waits on decision b93719697
Nightly bench evals
maintenance, turnover, morpheus
End-to-end runs through the real path at the test building. Now run by hand only. Retired Nov 1, verified in the nightly banners. Maintenance was 21/21 on one night ever (Jul 29). 16 PRs, 10 product fixes (e.g. #8249, #8627, #19296). #alerts. 0 of 10 posts got a reply or reaction. Mac mini 42 to 130 min a night with them, 2 to 18 without Keep retired
time-travel
time-travel.yml (daily)
Runs the unit tests with the clock moved ahead (30 days, a year, DST, midnight). No PR check does this. 4 tests listed on all 13 runs since Oct 23 break at +1 year: main goes red on Jan 1, 2027. First run defused ~33 date bombs (#18605 and 5 more). Nothing fixed since Oct 12. Issue #18610: 0 comments. 38,016 vCPU-min (largest) Weekly + owner; fix the 4 tests now
ddb-escape-sweep
(daily)
Runs every test file alone against a fake database. The PR gate only checks files the PR changed. Red 32 of 33. Test files that reach the real database: 3 (Oct 5) to 112 (Nov 4), and that is a floor. An earlier run found 56 files that were fixed. Now 112 open, 0 fixed. Issue #16601: 0 comments. 25,925 vCPU-min Owner or stop burn down the 112, then weekly
test-read-map
(daily)
Nothing yet. It records which files each test reads; its own header says nothing reads the map. 22 green of 23. Nothing, by design. 0 readers, 0 consumers. 10,492 vCPU-min Pause until something reads it
harnesses
(daily)
12 harnesses over real production code. Run nowhere else since Oct 18. 17 red of 20; last green Oct 20. "One call, one email" red every night since Oct 28. A possible real bug (open-hours missed transfer tells nobody), being checked. Only the unarmed 8-hour report. 0 readers. 1,045 to 1,969 vCPU-min Keep nightly owner per red job; stop the runner losses
nightly.yml
(Sundays since Oct 4)
The only scheduled grading of 10 eval packs the nightly sweep leaves out. The other 32 configs duplicate the nightly. No green since Jul 13 (83 runs straight). Same 5 of 28 over-escalation cases failed on both readable nights. No merged fix traced. 0 readers. 781 vCPU-min (4 runs) Shrink to the 10 packs; delete the duplicates
advisory-tests
(daily)
Timing-flaky tests moved off the PR lane; no PR runs. Green 16 nights since Oct 20. Before that 17 of 35 cancelled (10 time-outs, 7 never started). Not measured. 0 readers. 505 to 825 vCPU-min Fix or delete each test (flaky rule); owner meanwhile
renewal-evals
(Mondays)
The live multi-turn renewal eval. Its PR copy ran in 0 of 59 sampled PR runs. 22 red of 28; last green Oct 12. Not measured. 0 readers. 72 vCPU-min Fix or delete the live multi-turn job
intent-evals
(Mondays)
Model and SDK drift backstop. Its PR copy ran in 0 of 59 sampled PR runs. 24 green of 29. Not measured. 0 readers. 82 vCPU-min Keep weekly
voice-prompt-drift
(daily)
Catches changes made in the ElevenLabs screen that no PR can see. Reads config only, no simulations, no credits. 99 green of 100. Nov 1: 7 live voice agents declared nowhere in the repo. 0 readers. 122 vCPU-min Keep daily + owner
mutation-control-sweep
(daily since Oct 29)
Runs every mutation control; PRs run a subset. 5 green of 7; the 2 reds were its own budget. Not measured. 0 readers. 1,277 vCPU-min Keep fix the budget; delete nightly.yml's copy
goldmine-live-scorecard
(Mondays)
A weekly read-only score of one customer property. A metric, not a test. 9 green of 9; 2 green runs posted nothing (why: not measured). n/a #updates-fede: 7 posts, 0 replies. 22 vCPU-min Move to a dashboard
near-timeout-warning
(daily)
Lists tests close to their time limit. Issue lists 4 files, 4 tests. Not measured. Issue #20861: 0 comments. 12 vCPU-min Keep only with an owner
semgrep
(off)
The repo's only security scan. Switched off by hand Sep 30, PR scan included, and the schedule list still shows it. No scan since Sep 28. n/a n/a 0 Founder call turn it back on, or delete it
post-merge-heavy
(every 4 h)
Backstop to the sweep that gates release. A production gate, out of scope. 85 green, 5 red, 10 cancelled (newest 100). Not measured. 77 issues, all closed by a fleet credential, so not evidence a person read them. Not measured Keep
ingest-replay-weekly
Mac mini (Mondays)
Scores how many held-out renter questions Clara can answer per company. A metric; not on the schedule list at all. Company A 12.3% (26.9% with the intake sheet); Company B 26.6% (33.7%). Bar 80%. Flat over 3 runs. n/a #updates-gera: 7 posts, 0 replies. Not measured Register + dashboard

Seven smaller scheduled checks (config and doc invariants, not tests) are in their own table at the end. Fourteen scheduled ops jobs (deploys, cleanups, watchdogs) and the production monitors are out of scope.

What is being fixed now

FindingStatus
Two Clara evals broken by our own changes, not by Clara: the triage eval (#24935) and the tenant-services gauntlet (#24241). Together they turn 2 of last night's 13 red domains red.In progress a repair lane started Nov 4; no PR open yet at 18:50Z
Real Clara text gaps: Clara narrating an internal hand-off to a prospect ("I checked in with our leasing team…", against the rule that she hands off silently), a vendor who names their company not looked up by company, two topic-classifier misses, and the LM-off-returning-prospect candidate (A/B first to find what changed).In progress a Clara lane started Nov 4; no PR open yet at 18:50Z
Possible bug: during open hours, a caller whose transfer reaches nobody may tell nobody (harness red since Oct 28).Ruled out no customer was affected. Read-only, prod calls since Oct 28 at real customers where the transfer reached nobody: 5; the team got a delivered email for 4; the 5th (Nov 2, the caller only asked for a staff member by name and left no message) was skipped by the Oct 4 no-message rule, not by anything new. The harness went red because #22894 (Oct 27) moved every company onto the team-notification engine and the test bench was never set up for it, so since Oct 28 the harness has not really tested that path for any call. Fixing the harness is its own lane. Open founder question: should an open-hours caller who asks for a specific person and is not reached page the team?
Two voice gaps: a caller spells an email and Clara never reads it back (item10-read-back-email, item27-virtual-tour-volunteered-email).Not now a voice prompt change needs test calls, and Gera stopped test calls on Nov 3
Clara answering off-menu lease terms with "I'll check with the leasing team and get back to you" (nightly.yml over-escalation pack); a Spanish lead's follow-up written in English.In progress assigned to the Clara text-fix lane, one PR each, through the normal reviewed flow
The 4 Jan 1, 2027 tests; the 112 database-escaping test files; the nightly eval reporting change.No lane yet

The nightly Clara behaviour evals, in detail

Why it exists, in its own config: "so every day has one real eval reading even when PR sweeps were budget-skipped." That reason still holds. The PR-time copy of the same sweep runs on a daily budget that goes to whichever Clara branch pushes first after midnight UTC.

PR-time sweep, Oct 22 to Nov 4Count
PRs merged2,481
of those, touching a Clara path (the CI plan's own path list)1,037
PR sweeps that finished (all started 23:59Z to 02:11Z)14
swept at the exact commit that merged8
sweeps that were green0
swept PRs that merged anyway (nothing gates on it)14

Window is 14 days because the sweep's ledger keeps 14 days; 30 days is not measurable. Control: a Nov 4 swept PR is classified as a Clara PR by the same rule.

Record: 27 nights, never green

Every failing case, labelled

284 distinct failing cases across the 27 nights. 184 flip (fail, then pass), 59 stay red from their first failure, 41 failed once with nothing readable after. Per-case results exist only for the 12 nights from Oct 22 (older artifacts expire after 14 days), so "first red Oct 22" usually means "red on the first night we can read".

LabelCasesWhat it means
Model not used in production107The leasing-response pack grades Haiku 4.5 and Sonnet 4.6. Prospect text and email replies ran Sonnet 5, then Opus 5.5 from Oct 31 / Nov 1. Measured from the artifacts and the per-path model table.
Flaky at a zero-failure bar82Fails some nights, passes others; one slip turns the run red. Inferred from the pattern. A flipping case can still be a real defect that happens some of the time.
Flaky, absorbed by a floor53Same, in a domain with a measured pass mark.
Grader or fixture defect1412 triage cases broken by #24935; 2 tour-time rows where the grader calls a confirmation a decline.
Instrument changed13Leasing-response rows that failed only before Oct 31, when the pack graded a hand-typed copy of the prompt (its own header calls those results void).
Real Clara gap6Fail on all 12 readable nights, on the production model for the path. Listed below.
Real gap, candidate2Two leasing-response voice rows on the production voice model; not established that callers hear that prompt.
Real Clara regression, candidate1LM-off-returning-prospect, below.
Stale eval, candidate1maint-human-for-non-maintenance, below.
New, single night3One failure, nothing readable after.
Not read2Two teammate-recognition rows; the production model for that path is not mapped.

The domains that are red most often, and why

DomainBarRed nightsWhy redFailing casesIssue
check-availability-slot-reasonzero-failure22 / 254+ cases 13, 2-3 cases 7, 1 case 214 flaky#18914
maintenance-toolszero-failure22 / 261 case 11, 2-3 cases 8, 4+ 2, killed 113 flaky#18916
dashboard-chat-voicezero-failure21 / 252-3 cases 14, 1 case 78 flaky#18912
vendor-callingzero-failure19 / 252-3 cases 12, 1 case 76 flaky#18913
kb-fee-authorityzero-failure16 / 251 case 15, 2-3 cases 16 flaky#19193
office-closed-reasonzero-failure16 / 252-3 cases 11, 1 case 52 flaky#18915
renewalszero-failure12 / 261 case 7, 2-3 cases 4, killed 13 flaky#18909
leasing-specialszero-failure11 / 251 case 7, 2-3 cases 3, 4+ 14 flaky#19479
leasing-on-behalffloor10 / 25below floor 1015 flaky#18910
tour-home-property-stampzero-failure10 / 252-3 cases 5, 1 case 53 flaky (+ a fixture break Oct 21-24)#21571
leasing-responsefloor4 / 25below floor 3, killed 1107 wrong model, 13 void, 2 gap?#24226
tenant-resident-services-gauntletfloor3 / 25crash every night since Nov 2graded nothing#24409
triage-routingfloor2 / 25below floor 212 eval defect, 9 flaky, 1 regression?, 1 gap#24410

27 of the 35 domains that have ever been red have no owner in the eval catalog. 18 more domains were red on 1 or 2 nights each.

The two broken evals (our changes, not Clara)

  1. Triage, broken by #24935 (merged Nov 3, 21:34Z; red at the next night's run, Nov 4 03:49Z). The eval works out a default transfer mode but never passes it on, so every leasing case is told "the leasing ring list has nobody behind it", and Clara correctly takes a message. 12 cases went red together. Production is not affected: the live call route sets the mode itself.
  2. Tenant-services gauntlet, broken by #24241 (merged Nov 1, 06:47Z). A grader file path is written relative to the wrong folder, so the whole pack crashes every night since Nov 2 and has graded nothing for 3 nights. Its issue (#24409) has 0 comments.

The six real Clara gaps (red 12 of 12 readable nights, hidden because a floor absorbs them)

CaseWhat Clara doesProduction modelFix
M-vendor-company-delivery (triage)A vendor who names their company is never looked up by company, though the triage prompt says to.voice, Sonnet 4.6Clara lane
Internal-machinery case (leasing concerns)Tells a prospect she "checked in with our leasing team" and reopens the pitch, narrating an internal hand-off.prospect textClara lane
item10-read-back-email (voice feel)A caller spells an email; Clara never reads it back.voice, Sonnet 4.6Not now (voice)
item27-virtual-tour-volunteered-email (voice feel)Same, and the tour is booked with a first name only.voice, Sonnet 4.6Not now (voice)
Delivery-robocall case (topic classifier)An automated delivery call is tagged as a resident question.classifier, Haiku 4.5Clara lane
Billing-or-maintenance case (topic classifier)A sentence split evenly between billing and maintenance is called maintenance, with no "unclear" flag.classifier, Haiku 4.5Clara lane

No green-to-red night is readable for these six, so no introducing PR can be named.

Regression candidate, not confirmed: LM-off-returning-prospect (triage). Passed the 5 readable nights Oct 22 to 27, failed all 7 since Oct 28 (two-sided Fisher exact p ≈ 0.0013), on the production voice model. At a building with leasing switched off, Clara hands a returning prospect to the leasing specialist. Of 213 commits between the two nights, two touched the files the eval renders: #22813 (Spanish triggers, unrelated) and #22906 (a comment). The cause is not known; a two-version A/B is the next step and is in the Clara lane.

Stale eval, candidate: maint-human-for-non-maintenance (cross-sibling-pivot). On 12 of 12 nights the maintenance specialist sends a billing question to the Lease & Billing specialist. The case expects a transfer, citing a prompt file that does not exist on main. The prompt owner needs to say which behaviour is wanted.

What it caught, and what it costs

32 merged PRs reference a nightly-eval issue: 14 change Clara (for example #22318 a declined tour time never carries an invented reason, #22397 a closed office answers "are you open?" correctly, #22428 a move-in total must equal its parts, #22999 a cancelled tour gets a goodbye), 13 repair graders or fixtures, 4 are CI. All 32 merged Oct 25 to 31 from one agent push; none before or since. The domains stayed red anyway, because each fix clears one case under a zero-failure bar while another case flips.

CostMeasured
Runner timeabout 40 runner-minutes a normal night; 1,287 over 27 nights. Self-hosted spot runners, so GitHub bills none of it; the AWS cost is not measured.
Model tokens21.0M a night plus 0.38M for the grader (12-night mean, range 14.5M to 26.9M)
Dollarsabout $54 a night at list price; not billed (runs on the subscription, no metered key)
One packleasing-response is 47% of a night's tokens (Nov 2), spent on two models no prospect reply uses
CapacityOct 31 and Nov 1: both subscription accounts refused for 56 hours and 4.8 days; 9 domains graded nothing and the Oct 31 run was cancelled

Where the reds go

What it should become

  1. Fix the two broken evals (in progress).
  2. Grade the models production runs, or drop the arm. leasing-response should grade the prospect drafting model, keeping Sonnet 4.6 only for voice rows. Same for the other 149 cases whose failing arm is not production's.
  3. Report new failures, not domain verdicts. The per-case results already exist every night. Report what newly failed, newly passed and is still failing versus the night before. Under a zero-failure bar with one try per case, red is the normal state and says nothing. This changes no pass mark.
  4. Give the reds a reader (founder call): arm the 8-hour report, or send the new-failure list to whoever owns Clara quality.
  5. Fix or delete each of the 82 flaky cases (Gera's rule: never quarantine, never retry to green). Pass-mark values stay a founder call (held PR #22343, open decision b93085657).
  6. The PR-time sweep, as built, adds little. Once item 3 lands it should report the same diff, so a PR's receipt reads "this PR newly broke X".

Why not weekly or delete: weekly loses the one thing it does that nothing else does, dating a break to one night (triage Nov 4, gauntlet Nov 2, tour-home Oct 21). Deleting it leaves 1.4% of Clara PRs with any eval reading.

Every other suite, in detail

Voice regression watch: retire

Nightly bench evals: keep retired

time-travel: weekly, with an owner

ddb-escape-sweep: owner or stop

harnesses: keep nightly, route each red

nightly.yml: shrink to the 10 packs only it grades

The rest

The seven scheduled checks

CheckMeasuredBecomes
schedule-drift (weekly)45 green, 18 red; red Oct 28 and Nov 4 (content not read)Keep; make it read GitHub's on/off state and the Mac mini's schedules too
phone-address-dump-drift (daily)red 21 runs straight since Oct 14Regenerate the dump or delete the check
adr-lens-sync (monthly)4 of 4 green; its issue unread since Jul 2Delete, or give it an owner
lambda-runtime-eol-check (weekly)26 of 26 greenKeep
audit-runtime-token-parity (daily)99 green, 1 cancelledKeep
prod-cookie-preflight (daily)89 green, 11 red, last red Sep 7; the job it served was retired Nov 2Delete with its cookie refresh once nothing reads it
ledger-cliff-warning (daily since Nov 3)2 of 2 green; the only copy that reaches a personKeep; delete nightly.yml's copy

Smith's first pass, re-checked

Smith saidMeasured
Clara nightly: 0 green in the last 60 runsOnly 27 scheduled runs exist; 0 of 27 green.
One run: 1,437 pass / 127 fail; leasing-response 78 of the 127Right.
Production runs Sonnet 4.6, so the Haiku arm may not matterWrong table. Prospect replies run Sonnet 5, then Opus 5.5. Haiku does run some production paths, but not the reply leasing-response grades.
Triage: 8 "expected a human transfer" may be a real Clara bug13, and 12 of them are the eval defect from #24935. Production is not affected.
The PR sweep ran once in a 25-run sample14 sweeps in 14 days, about one a day, on 1.4% of Clara PRs.
Models are pinnedYes, the grader too. "The model changed" does not explain anything here.
harnesses last green Oct 20Right; 15 reds in a row since.
advisory-tests 14 of 30 cancelledStale: 17 of 35, all before Oct 20; green 16 nights since.
nightly.yml stress, Sundays, 4 of 4 redRed 83 runs straight since Jul 13; the stress jobs stopped running on a schedule Sep 29, the weekly reds are eval packs.

Decisions this needs from a founder

Everything else on this page is agent work. A board was set up on Nov 1 to retire overnight tests; it still holds only its template rows and nobody is driving it.

Not measured

PropFlow Docs