Conversation
Contributor
Author
|
Demo: simulate-repeats.mp4The detail views print into the terminal's own scrollback, which the recorder does not capture. ENTER on the scenario row prints this: ENTER on an attempt prints that job as before, titled |
u9g
force-pushed
the
jason/simulation-repeats
branch
from
September 14, 2026 20:09
81fcea4 to
6e52fa6
Compare
theomonnom
reviewed
Sep 15, 2026
theomonnom
approved these changes
Sep 15, 2026
Contributor
Author
|
limit at 3 serverside |
Contributor
Author
|
enforce an odd number of samples serverside |
u9g
force-pushed
the
jason/simulation-repeats
branch
3 times, most recently
from
September 15, 2026 19:34
cadb259 to
dedc87a
Compare
sortedJobs is the one place a run's jobs get a stable order, so the report can share it.
One attempt per scenario cannot tell a flaky scenario from a broken one. --repeats K asks the server for K attempts of every scenario in one run; the CLI groups attempts under their scenario in the job list and report, labels each attempt, and adds a pass@k (passed at least once) / pass^k (passed every time) line to the counts header and summaries, computed over the scenarios whose attempts have all finished. The exit code is unchanged: any failed attempt fails the run.
The open detail is about to be a scenario as well as a job.
A repeated run listed every attempt as its own numbered job, so a 4-scenario run read as 12 rows. Each scenario is now one row with its pass count and its attempts branch under it. Opening the scenario row shows the brief once and every attempt's verdict and transcript; opening an attempt shows that job as before.
u9g
force-pushed
the
jason/simulation-repeats
branch
from
September 16, 2026 19:41
dedc87a to
7f1a26b
Compare
Follows livekit/protocol#1799 renaming the proto field.
Follows livekit/protocol#1799 renaming Job.attempt.
u9g
force-pushed
the
jason/simulation-repeats
branch
from
September 17, 2026 15:16
7f1a26b to
ad6b42d
Compare
No behaviour change: the field moved, the run still requires every sample.
A scenario was all-or-nothing, so sampling it could only ever make it harder to pass and a single flaky sample failed the run. --pass-rate is the share of a scenario's samples that must pass, rounded to whole samples and floored at one, defaulting to 0.75 so a scenario may flake once in three. The run fails on scenarios below the bar rather than on failed samples; pass@k and pass^k still only report. The TUI settles a scenario's icon as soon as the remaining samples cannot change the verdict, so 2 of 3 goes green on the second pass.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Depends on livekit/protocol#1799. livekit/agents-private#457 (server fan-out) is merged and needs a follow-up for
Sampling.One sample per scenario cannot tell a flaky scenario from a broken one — and sampling only helps if it can also change the scenario's verdict.
--samples K(-k) asks the server for K samples of every scenario in one run. Requires--scenarios.--pass-rate RATEis the share of a scenario's samples that must pass for that scenario to pass, defaulting to0.75. It rounds to whole samples and is floored at one, so0.75of 3 needs 2 and a scenario may flake once in three. Requires--samples.2/3is a pass at the default rate. The run fails on scenarios that finished below the bar rather than on any failed sample, so the exit code changes for sampled runs and is unchanged without--samples.N/M scenarios failedwhen a sampled run has any, because the sample counts beside it no longer imply the verdict.(sample 2/3).pass@3 3/4 (0.75), pass^3 1/4 (0.25): share of scenarios that passed at least once, and that passed every time, over the scenarios whose samples have all finished. Both only report; neither gates.exportpicks up the newsampling,scenario_idandsamplefields via the verbatim protojson passthrough.On the default
At three samples every rate in
[0.5, 0.833]rounds to the same two samples, so0.75is indistinguishable from0.6or0.8. It is a three-position dial, not a percentage — worth knowing before tuning it. A scenario passing at2/3also displays a rate below the configured one, which is the rounding working as intended.